gseok   6년 전

Java 구현시 완전 동일한 LIS 로직을 구현해도 무조건 runtime exception 이  발생합니다.


runtime exception의 발생 조건은


BufferedReader, BufferedWriter, StringTokenizer 이중 하나라도 들어있으면 완전 동일로직에서 runtime exception이  발생하여서 오답 처리됩니다.


문제 자체에 입력을 Scanner로 고정해야 한다는 조건이 없고, 문제를 parsing 하는 부분역시 그런 조건이 없습니다.


현재 백준에서는 runtime exception시 힌트가 하나도없기 때문에 정상적인 로직을 구현한 경우 이를 찾아서 수정하기가 매우 어렵습니다.


Java로 3745 오름세 문제를 푸시는 분들은


Scanner로 입력을 받고, 해당 클래스의 hasNext, nextInt 등의 함수만 사용해서 파싱하고,

출력은 System.out.println을 사용하여야 합니다.

(BufferedReader, BufferedWriter, StringTokenizer) 사용시 문제에 대한 로직이 아니라, 입출력 관련으로 에러가 발생합니다.


해당 문제, 담당자, 혹은 출제자는, Java구현자를 위해서 이 부분을 수정하거나, 문제에 명시가 필요해 보입니다.

이거 때문에 30번 오답 하고 찾았네요...

isku   6년 전

BufferedReader로 입력을 읽을 때 .trim() 함수를 사용하셨나요?

또 입력 종료에 대해서 null 체크를 하셨는지요..?

소스코드 첨부가 안되서 가독성이 조금 그렇지만 아래 코드를 참고하세요!


BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String line;

while((line = br.readLine()) ! = null) {

    int n = Integer.parseInt(line.trim());

    StringTokenizer st = new StringTokenizer(br.readLine().trim());

}



댓글을 작성하려면 로그인해야 합니다.