반응형
반응형
코딩테스트에서는 알고리즘을 잘 짜는 것도 중요하지만, 입출력 속도 때문에 정답을 맞추고도 시간 초과(TLE)가 나는 경우가 자주 있습니다. 특히 자바는 Scanner와 System.out.println을 그대로 쓰면 위험합니다.
이 포스팅은 ‘프로그래머스’ 플랫폼을 통해서 시험을 본다면 전혀 볼 필요가 없습니다
✅ 왜 Scanner + println이 망할까?
Scanner는 내부에서 정규식을 써서 입력을 파싱하기 때문에 매우 느립니다.System.out.println은 출력할 때마다 버퍼를 비우기 때문에 출력이 많으면 병목이 생깁니다.
즉, 입력이 수천~수만 줄 이상 들어오는 문제에서는 그대로 쓰면 시간 초과가 날 확률이 높습니다.
실제로도 입출력만 바꿔도 통과하는 경우가 생길 정도입니다!
✅ 빠른 입력 (BufferedReader + StringTokenizer)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
}
}
BufferedReader→ 입력 전체를 버퍼에 모아두고 빠르게 읽음StringTokenizer→ 공백 단위로 쪼개기 좋음 (split 대체)
✅ 빠른 출력 (StringBuilder)
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++) {
sb.append(i).append("\n");
}
System.out.print(sb);
println을 매번 쓰지 말고,StringBuilder에 모아서 한 번에 출력하면 속도가 크게 개선됩니다.

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'언어+프레임워크 > JAVA' 카테고리의 다른 글
| [JAVA] 코테 기본기(4): 소수점 처리 완벽 정리 (0) | 2025.09.09 |
|---|---|
| [JAVA] 코테 기본기(2): 배열 to 리스트 변환 완벽 정리 (0) | 2025.09.05 |
| [JAVA] 코테 기본기(1): 정렬 완벽 정리 (0) | 2025.09.04 |
| [JAVA] 3가지 List 생성 방법 비교와 진정한 불변리스트 (불변리스트는 정말 객체까지 불변일까?) (1) | 2025.03.25 |
| [JAVA] try-with-resources를 사용해서 리소스 누수를 방지하자! (0) | 2023.09.29 |