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

+ Recent posts