지금 여기에 붙이신 코드가 BOJ에 제출한 코드와 완전히 동일합니까?
만약 그렇다면, 첫 번째 줄의 package 문 때문에 RTE가 발생했을 겁니다.
이것 이외에 다른 부분에서 RTE가 발생할 만한 곳은 없는 것 같습니다.
10989번 - 수 정렬하기 3
첫번째 줄 package는 코드 관리로 만든거라 BOJ 제출시에는 포함되지 않았습니다만 제가 실수로 질문올릴때 코드에 포함시켜버렸네요..
질문드린 코드중 package 제외하고 제출하더라도 RTE가 발생합니다.
그러나 아래 코드는 BufferedReader로만 바꿨는데 Pass한 답안입니다.
import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] count = new int[10001]; for (int i = 0; i < N; i++) { int a = Integer.parseInt(br.readLine()); if(a >= 1 && a <= 10000) count[a]++; } for (int i = 1; i <= 10000; i++) { for (int j = 0; j < count[i]; j++) { bw.write(i + "\n"); } } bw.flush(); } }
이 프로그램을 제출했을 당시 BOJ에 시간 초과를 런타임 에러로 잘못 판정하는 버그가 있었을 가능성이 있습니다.
java 의 Scanner 는 입출력 속도가 *매우* 느린 것으로 악명이 높습니다. 원래 받았어야 할 결과는 "시간 초과"일 가능성이 높습니다.
댓글을 작성하려면 로그인해야 합니다.
rlaxodnd5 4년 전
Scanner를 사용하면 런타임 오류가 발생합니다.
그러나 BufferedReader를 사용하면 통과합니다.
이러한 차이가 발생하는 원인이 궁금합니다..