가희의자기개발블로그
1946번 백준 <신입 사원> 그리디 알고리즘 본문
반응형
https://www.acmicpc.net/problem/1946
1946번: 신입 사원
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성��
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class GreedyAlgorithm02 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine()); //테스트 케이스 수
for(int i = 0; i<T; i++ ){
int N = Integer.parseInt(br.readLine()); //지원자 수
int [][] score = new int[N][2]; //각 지원자의 점수
int count = 1;
for(int j= 0; j<N; j++){
String line = br.readLine();
int pos = line.indexOf(" ");
score[j][0] = Integer.parseInt(line.substring(0,pos));
score[j][1] = Integer.parseInt(line.substring(pos+1));
}
Arrays.sort(score, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
int min = score[0][1];
for(int j = 1; j<N; j++){
if(score[j][1] == 1){
count++;
break;
}
if(score[j][1] < min){
count++;
min = score[j][1];
}
}
System.out.println(count);
}
}
}
자꾸 시간 초과 에러가 나서 내 로직이 뭐가 잘못되었는지 몇일간 고민하느라 푸는데 오래걸린 문제!!
사실 그 문제는 입력 시간이 너무 길어져서 나는 시간 초과 문제 였다.
입력하는 함수로 Scanner함수를 사용하였는데, 백준에서 찾아보니 Scanner같은 경우 입력값이 많아질 경우, 시간이 더 오래걸린다고 한다.
BufferedReader로 바꿔주니 잘 통과 되었다.
반응형
'프로그래밍 언어 > 알고리즘' 카테고리의 다른 글
백준 2839번 <설탕배달> 그리디, 동적알고리즘 설탕배달 (0) | 2021.04.29 |
---|---|
[개념]다익스트라 알고리즘 (2) | 2020.10.06 |
백준 2875번 <대회 or 인턴> 그리디 알고리즘 (0) | 2020.07.06 |
백준 1541 <잃어버린 괄호> 그리디 알고리즘 (0) | 2020.07.02 |
백준 1931번 <회의실배정> 그리디알고리즘 (0) | 2020.07.02 |
Comments