※ 시간 제한 = 1.5초(1500ms)
Scanner와 System.out.println 사용하면 시간초과!
🔎 System.out.println()을 사용하면 안되는 이유?
→ 테스트 케이스가 많아질수록(max 100만개) System.out.println()의 호출 횟수 또한 증가, BufferedReader를 사용하더라도 각 테스트 케이스마다 System.out.println()를 호출한다면 시간이 초과됨
※ 방법1. BufferedWriter를 사용하여 버퍼에 데이터를 담아뒀다가 한번에 출력
※ 방법2. StringBuilder를 사용하여 하나의 문자열로 계속 연결시킨 후 출력
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for(int i=0; i<T; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
bw.write(A + B + "\n");
}
br.close();
bw.flush();
bw.close();
}
}
bw.write(); → 버퍼에 데이터 입력(저장)
bw.flush(); → 버퍼에 있는 데이터 모두 출력
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0; i<T; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append(A + B).append("\n");
}
System.out.print(sb);
br.close();
}
}
※ node.js에서의 시간 초과 해결
→ readline 모듈은 fs 모듈에 비해 소요시간이 더 많이 걸림
→ console.log() 호출 횟수가 많아질수록 실행 소요 시간 또한 길어지기 때문에 하나의 변수에 결과값을 모두 저장한 후, 한 번에 출력해주는 방식을 사용
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n");
const T = Number(input[0]);
let str = ""; // 변수 선언 시 초기값 지정, 지정해주지 않을 시 Undefined
for(let i=1; i<=T; i++){
let [A, B] = input[i].split(" ").map(Number);
str += A + B + "\n";
}
console.log(str);
🔎 stdin(standard input의 약자)
- stdin을 사용하려면 sys 모듈 import 필요
- input 대비 빠른 속도와 효율적인 메모리 공간
import sys # sys모듈 읽어오기
T = int(sys.stdin.readline())
for i in range(T):
A, B = map(int, sys.stdin.readline().split())
print(A+B)