cheoljoong92   7년 전

처음에는 결과배열을 만들고 출력하는 식으로 했다가

그 시간마저 줄이기 위해 바로바로 값을 출력했는데요

그래도 시간초과가 뜨네요

어떻게해야 시간초과를 피할 수 있을까요

bupjae   7년 전

Java의 Scanner는 입력 속도가 매우 느린 것으로 악명이 높습니다. 이 정도 규모의 데이터를 입력받을 때는 BufferedReader를 추천합니다.

cheoljoong92   7년 전

BufferedReader의 readLine으로 한 행을 입력받고 이것을 StringTokenizer로 토큰을 나눠 Integer.Parse 하는 방식으로도 접근해보았지만

똑같이 시간초과가 났네요

BufferedReader로 다르게 접근하는 방법이 있을까요

bupjae   7년 전

다음 순서대로 하나씩 시도해 보세요 (앞 것을 먼저 한 뒤 제출해도 시간 초과가 나온다면 그 다음 것까지 시도해 보고, ...)

제 예상으로는 첫 번째 것으로 시간초과 문제는 해결될 거라고 생각합니다만...


* 출력 하는 부분에 BufferedWriter 를 활용해 보세요. (프로그램 끝나기 전에 꼭 close() 해 주세요)

* Integer.parseInt() 를 직접 구현해 보세요.

* StringTokenizer를 직접 구현해 보세요.

pcb1984   7년 전

배열의 크기가 1 ≤ N, M ≤ 1,000,000 입니다.

최악의 경우 2,000,000 번 System.out.print 가 호출되네요.

System.out.print 의 경우 속도가 느려 시간 초과가 나옵니다.

StringBuilder 를 사용해보세요.

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