728x90
<원래 코드>
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
String input2 = br.readLine();
int num = Integer.parseInt(input.split(" ")[0]);
int length = Integer.parseInt(input.split(" ")[1]);
String[] arr = input2.split(" ");
Arrays.sort(arr);
for(int i=0; i<num; i++){
if(Integer.parseInt(arr[i])<=length){
System.out.println(arr[i] + " "+ length);
length++;
}
}
return length;
주어진 테스트 케이스 2개에서는 정답인데 왜 틀리는 지 몰라서 답답했다 ㅠㅠ
다른 사람의 풀이를 검색해봤는데 딱히 다른게 입출력 부분 뿐이라서 고쳐봤더니 됐다.. 정말 이것 때문인가?
맨날 프로그래머스에서 풀어서 입출력 부분을 직접 작성할 일이 없었는데.. 상황에 따라 알맞게 써야겠다
<고친 코드>
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int length = sc.nextInt();
int[] arr = new int[num];
for (int i = 0; i < num; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
for (int i = 0; i < num; i++) {
if (arr[i] <= length) {
System.out.println(arr[i] + " "+ length);
length++;
}
}
return length;
1. Scanner의 버퍼 크기는 1024 chars, 반면 BufferReader의 버퍼 크기는 8192 chars이다.
2. BufferReader는 문자열을 단순히 읽고 저장, Scanner는 문자열을 구분하여 분석할 수 있다.
3. BufferReader는 동기화 된다. (멀티 쓰레드에 안전하다.) 반면 Scanner는 동기화가 되지 않는다.
4. BufferReader는 즉시 IOException 처리를 던지지만, Scanner는 숨긴다.
결론: Scanner가 더 편하지만 BufferReader의 속도가 더 빠르다.
알고리즘 문제를 풀 때는 BufferReader를 이용하는 것이 빠르니 더 좋은데.. 다시 코드를 고쳐봐야겠다
'알고리즘' 카테고리의 다른 글
배열 내림차순 정렬 (0) | 2021.02.23 |
---|---|
백준 11399 String[] -> Int[] (0) | 2021.02.18 |
탐욕(그리디) 알고리즘 (0) | 2021.02.16 |
1로 만들기 (0) | 2021.02.06 |
알고리즘27 LCA (0) | 2020.12.03 |