nttmxk   4년 전

제 18059468번째 제출은 정답을 System.out.println을 사용하여 출력했고

18059523번째 제출은 정답을 BufferedWriter를 사용해서 출력했음에도 불구하고 두 제출의 시간이 112ms로 동일합니다. 오히려 메모리 사용에 있어서 BufferedWriter쪽이 안좋게 나왔네요.

빠른 입출력은 BufferedReader와 BufferedWriter를 사용해야한다고 알고있었는데 이 문제에서 유의미한 시간차이가 나지 않은 이유는 무엇인지요?

yclock   4년 전

입출력이 그리 많지 않은 문제이기 때문입니다.

만약 입출력량이 충분히 많다면 시간 차이가 분명하게 나타날 것입니다.

nttmxk   4년 전

한 줄을 출력해도 시간차이가 유의미하게 나타날 줄 알았습니다. 빠른 A+B같은 문제를 보더라도요.

제가 BufferedWriter와 BufferedReader에 대해서 잘 못 이해하고 비효율적으로 쓴 코드는 없는건가요 그럼?

yclock   4년 전

"빠른 A+B" 문제에서는 입력이 2백만 개, 출력이 1백만 개의 수로 이루어져 있습니다. 반면에, "소인수분해" 문제의 경우, 입력은 단 하나의 정수, 출력은 많아봐야 23개의 수로 이루어져 있습니다. 그렇기 때문에 후자는 전자에 비하여 유의미한 시간 차이를 관측하기 힘듭니다.


아쉽게도 저는 Java에 대하여 깊은 지식을 가지고 있지 않습니다. "빠른 A+B"에서 Java 언어로 제출한 분들의 소스 코드를 참고하시면 좋을 듯 합니다.

nttmxk   4년 전

아닙니다. 정말 감사합니다^^

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