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));
int cnt;
cnt = Integer.parseInt(br.readLine());
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for (int i=0; i<cnt ; i++){
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line, " ");
bw.write(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())+"\n");
}
bw.flush();//남아있는 데이터를 모두 출력시킴
bw.close();//스트림을 닫음
}
}
Scanner와 Println 등은 데이터가 들어오는 족족 바로바로 입출력이 일어나서 오래걸린다.
한번에 모아뒀다 입출력 하는 BufferedReader와 BufferedWriter를 사용하는 것이 이번 문제의 요지. (참고)
위의 코드는 내 정답 : 824ms
아래는 다른 사람의 코드 : 776ms
로직은 비슷하나 나는 아래 코드에서는 int a, b 라는 변수를 사용했다.
내 코드에서는 a와 b에 해당하는 변수를 생성하고 그곳에 값을 담는데
아래 코드에서는 이미 변수가 생성된곳에 값만 담아서 사용하면 되니깐 더 빠른것 같다.
(정확한 이유를 아시는 분은 댓글좀 부탁드립니다.)
import java.io.*;
import java.util.*;
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 count = Integer.parseInt(br.readLine().trim());
int a, b;
for(int i=0; i<count; i++) {
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str," ");
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
bw.write((a+b) + "\n");
}
bw.flush();
bw.close();
}
}
'알고리즘 > acmicpc.net' 카테고리의 다른 글
11022 (0) | 2020.07.08 |
---|---|
11021. (0) | 2020.07.08 |
2741. N찍 & 2742.N반대로찍 (0) | 2020.07.08 |
8393. 하압 (0) | 2020.07.07 |
acmicpc.net => 백준의 알고리즘 사이트. (0) | 2020.07.07 |