๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/11968)
< High Card Wins >
๋ฌธ์ ํ์ด
๊ฐ ํ๋ ์ด์ด๊ฐ ๊ฐ์ง ์นด๋๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ์นด๋ ๋ฐฐ์ด์ ๋ค์์๋ถํฐ(=ํฐ ๊ฐ๋ถํฐ) ๋น๊ตํ๋ฉด์ ์๋๋ฐฉ ์นด๋ ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ ์ ํ๋์, ํฌ์ง ์๋ค๋ฉด ๋งจ ์์ ์นด๋๋ฅผ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๋ค.
= ๋ด๊ฐ ๊ฐ์ง ์นด๋ ํฐ ๊ฐ์ ์๋๋ฐฉ์ ์นด๋ ์ค ํฐ ๊ฐ๊ณผ ๋น๊ตํด์ ์ด๊ธฐ๋๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ต๋๊ฐ์ ์ป์ ์ ์๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class _11968_ { // High Card Wins
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
int a[] = new int[N];
int b[] = new int[N];
for (int i = 0; i < N; i++) {
a[i] = Integer.parseInt(bf.readLine());
}
Arrays.sort(a);
int num = 1, idxA = 0, idxB = 0;
while (num <= 2 * N) {
if (idxA<N && num == a[idxA]) {
num += 1;
idxA += 1;
} else {
b[idxB++] = num++;
}
}
idxA = N - 1;
idxB = N - 1;
int result = 0;
while (idxA >= 0) {
if (a[idxA] < b[idxB]) {
idxB -= 1;
result += 1;
}
idxA -= 1;
}
System.out.println(result);
}
}
๋ณ์)
N : 1์ธ๋น ์นด๋ ๊ฐ์
a, b : ๊ฐ ํ๋ ์ด์ด์ ์นด๋ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด
์นด๋ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์นด๋ ๊ฐ์๋งํผ ์๋๋ฐฉ์ ์นด๋ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ a ๋ฐฐ์ด์ ์ ์ฅํ๋ค. a ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ a ๋ฐฐ์ด์์ ์๋ ๊ฐ์ b ๋ฐฐ์ด์ ์ ์ฅํ๋ค. a ๋ฐฐ์ด์ ์ ์ฒด ํ์ํ ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. a ๋ฐฐ์ด๊ณผ b ๋ฐฐ์ด์ ๋ค์์๋ถํฐ ํ์ํ๋ฉฐ b ๋ฐฐ์ด์ ๊ฐ์ด ํฌ๋ค๋ฉด ์ ์ ํ๋๊ณผ b ์ธ๋ฑ์ค ๊ฐ์ ๋ฐ a ์ธ๋ฑ์ค ๊ฐ์๋ฅผ, b ๋ฐฐ์ด์ ๊ฐ์ด ํฌ์ง ์๋ค๋ฉด a ์ธ๋ฑ์ค๋ฅผ ๊ฐ์์ํจ๋ค.
์ต์ข result๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 6160_Election Time (0) | 2024.10.29 |
---|---|
[Baekjoon] 10527_Judging Troubles (0) | 2024.10.28 |
[Baekjoon] 7596_MP3 Songs (0) | 2024.10.24 |
[Baekjoon] 9414_ํ๋ก๊ทธ๋๋ฐ ๋ํ ์ ์ฉ ๋ถ์ง (0) | 2024.10.23 |
[Baekjoon] 5939_Race Results (0) | 2024.10.22 |