문제
코드
맞았습니다가 뜬 코드입니다. - 메모리 16592KB | 시간 340ms | 코드 길이 1322B
import java.io.*;
import java.util.*;
public class Main {
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(bf.readLine());
ArrayList<Integer> n_arr = new ArrayList<>();
StringTokenizer st = new StringTokenizer(bf.readLine());
for(int i = 0 ; i < n ; i++) {
n_arr.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(n_arr, Collections.reverseOrder());
int m = Integer.parseInt(bf.readLine());
ArrayList<Integer> m_arr = new ArrayList<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0 ; i < m ; i++) {
m_arr.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(m_arr, Collections.reverseOrder());
if(n_arr.get(0) < m_arr.get(0)) {
bw.write("-1");
} else {
int ans = 0;
while(!m_arr.isEmpty()) {
int idx = 0;
for(int i = 0 ; i < n_arr.size() ; ) {
if(idx == m_arr.size()) break;
else if(n_arr.get(i) >= m_arr.get(idx)) {
m_arr.remove(idx);
i ++;
}
else idx ++;
}
ans ++;
}
bw.write(Integer.toString(ans));
}
bf.close();
bw.flush();
bw.close();
}
}
Try1. 시간 초과가 뜬 코드입니다. - 코드 길이 1299B
import java.io.*;
import java.util.*;
public class Main {
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(bf.readLine());
ArrayList<Integer> n_arr = new ArrayList<>();
StringTokenizer st = new StringTokenizer(bf.readLine());
for(int i = 0 ; i < n ; i++) {
n_arr.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(n_arr, Collections.reverseOrder());
int m = Integer.parseInt(bf.readLine());
ArrayList<Integer> m_arr = new ArrayList<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0 ; i < m ; i++) {
m_arr.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(m_arr, Collections.reverseOrder());
if(n_arr.get(0) < m_arr.get(0)) {
bw.write("-1");
return;
}
int ans = 0;
while(!m_arr.isEmpty()) {
for(int i = 0 ; i < n_arr.size() ; i++) {
for(int j = 0 ; j < m_arr.size() ; j++) {
if(n_arr.get(i) >= m_arr.get(j)) {
m_arr.remove(j);
break;
}
}
}
ans ++;
}
bw.write(Integer.toString(ans));
bf.close();
bw.flush();
bw.close();
}
}
박스배열에서 어쨋든 idx를 사용하면 for문이랑 비슷한 시간이 나올 것 같았는데 아닌가 봅니다..
'코딩테스트' 카테고리의 다른 글
[백준] 5107번 '마니또' - Java (1) | 2023.07.20 |
---|---|
[백준] 1043번 '거짓말' - Java (1) | 2023.07.19 |
[백준] 1068번 '트리' - Java (1) | 2023.07.17 |
[백준] 1956번 '운동' - Java (1) | 2023.07.16 |
[백준] 2109번 '순회강연' - Java (1) | 2023.07.14 |