본문 바로가기

알고리즘

백준(15552) - 빠른 A+B(java)

1.문제

테스트케이스 T를 입력받아 T만큼 A+B의 값을 출력하라.

2.입력

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

3.출력

각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.

4.풀이

 - Scanner사용(시간초과) -> 테스트케이스가 많아질수록 Scanner를 불로오는 횟수가 너무많아서 성능이 저하됨.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Main {
    public static void main(String [] args) {
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        int a = 0;
        int b = 0;
        int [] result = new int[count];
        for(int i=0; i<count; i++) {
            a = sc.nextInt();
            b = sc.nextInt();
            result[i] = a+b;
        }
        
        for(int i=0; i<result.length; i++) {
            System.out.println(result[i]);
        }
        
        sc.close();
    }
}
cs

 - Buffer사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
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 n = Integer.parseInt(br.readLine().trim());
        
        for(int i=0; i<n; i++) {
            String input = br.readLine();
            String [] word = input.split(" ");
            int a = Integer.parseInt(word[0]);
            int b = Integer.parseInt(word[1]);
            bw.write((a+b) + "\n");
        }
        
        bw.flush();
        bw.close();
        br.close();
    }
}
cs