https://www.acmicpc.net/problem/2012
๊ฐ๊ฐ ๋ฌด๊ฒ ์ ํ์ด ์๋ N๊ฐ์ ํฌ๋ ์ธ์ผ๋ก M๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์ฎ๊ธธ ๋ ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์ง ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ปจํ ์ด๋์ ํฌ๋ ์ธ์ ๊ฐ๊ฐ ์ ๋ ฌํ ํ ๊ฐ๊ฐ์ ํฌ๋ ์ธ๋ค์ด ํ์ฌ ๋จ์์๋ ์ปจํ ์ด๋ ์ค์์ ์์ ์ด ๋ค์ ์ ์๋ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ปจํ ์ด๋๋ค์ ์ฎ๊ธฐ๋๋ก ์ฝ๋๋ฅผ ์ง๋ฉด ๋๋ค.
๐จ ์ฃผ์
์ฒ์์ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ๋งค ์๊ฐ๋น ํฌ๋ ์ธ๋ค์ด index๊ฐ 0์ธ ์ปจํ ์ด๋๋ค๋ถํฐ ํ์์ ํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ์๋๋ ์ปจํ ์ด๋ ์ด๋์ด ์๋ฃ๊ฐ ๋๊ฑฐ๋ ์์ ์ด ์ฎ๊ธธ ์ ์๋ ๋ฌด๊ฒ์์๋ ๋ถ๊ตฌํ๊ณ ๋ถํ์ํ ํ์์ ๋ฐ๋ณต์ ์ผ๋ก ํ๊ฒ๋์ด ์๊ฐ์ด๊ณผ๊ฐ ๋์๋ค.
๊ทธ๋์ start๋ฐฐ์ด์ ๋ง๋ค์ด ๋ฐฐ๋ฒ crane์ด ํ์์ ์์ํ ์ปจํ ์ด๋๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋๋ก ํ์๋๋ ์๊ฐ์ด๊ณผ๊ฐ ๋์ค์ง ์๊ณ ๋ฌธ์ ๊ฐ ๋ฌด์ฌํ ํต๊ณผํ์ต๋๋ค.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// ํฌ๋ ์ธ ๋ฌด๊ฒ ๋ฐ๊ธฐ
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Integer[] crane = new Integer[N];
for (int i=0; i<N; i++) {
crane[i] = Integer.parseInt(st.nextToken());
}
// ์ปจํ
์ด๋ ๋ฌด๊ฒ ๋ฐ๊ธฐ
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
Integer[] container = new Integer[M];
for (int i=0; i<M; i++) {
container[i] = Integer.parseInt(st.nextToken());
}
// ํฌ๋ ์ธ๊ณผ ์ปจํ
์ด๋ ๋ฌด๊ฒ ์ ๋ ฌ
Arrays.sort(crane, Collections.reverseOrder());
Arrays.sort(container, Collections.reverseOrder());
if (container[0] > crane[0]) System.out.println(-1);
else {
int result = 0;
int[] start = new int[N];
Arrays.fill(start, 0);
while (M > 0) {
for (int i=0; i<N; i++) { // ๊ฐ๊ฐ์ crane์ด ์ผํจ
if (M < 1) break;
for (int j=start[i]; j<container.length; j++) {
if (container[j]==0 || container[j] > crane[i]) {
start[i]++;
continue;
}
container[j] = 0;
M--;
break;
}
}
result++;
}
System.out.println(result);
}
}
}