티스토리 뷰

 

문제

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

풀이

 정수 a, b를 받고 a + b를 출력하면 됩니다.

 

 Scanner라는 편한 클래스가 있지만 나중을 위해 BufferedReader, BufferedWriter 클래스를 사용하는 것이 더 나은 선택입니다. Scanner는 선언하는 것만으로도 무겁고 입출력 속도가 너무 느립니다. 문제를 풀다 보면 로직 자체에 아무런 문제가 없는데, 시간 초과가 나오는 것을 종종 볼 수 있습니다. 어떤 문제는 단지 Scanner를 선언하는 것만으로도 시간 초과가 납니다. Scanner 때문에 시간 초과가 날 수 있다는 것을 염두에 두고 있으면 그때그때 제대로 대처할 수도 있겠지만 보통은 종종 잊곤 합니다. 이럴 때 가장 큰 문제점은 아무런 오류가 없는 로직 자체를 의심해 많은 시간을 삽질하게 만든다는 점입니다. 그러니 이 글을 보고 있는 여러분은 빠르게 BufferedRedaer, BufferedWriter 클래스 사용법을 익히기를 권합니다. 아니면 C++로 갈아타는 것도 좋은 방법입니다. 필자는 어쩔 수 없이 현재 Java를 사용하고 있습니다.

 

 아래 사진에서 위쪽은 BufferedReader, BufferedWriter를 사용했을 때 속도, 아래쪽은 Scanner를 사용했을 때 속도입니다. 이 문제에선 입출력이 한 줄씩인데도 속도가 이 정도로 차이가 납니다. 입출력이 커지면 이러한 차이는 더욱 커집니다.

 

 

 

코드

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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        bw.write(a + b + "\n");

        bw.flush();
        bw.close();
        br.close();
    }
}

 

 

'컴퓨터공학 > Problem Solving' 카테고리의 다른 글

[백준/BOJ] 1008 : A/B (자바/Java)  (0) 2022.09.12
[백준/BOJ] 1001 :A-B (자바/Java)  (0) 2022.09.12
백준 10473  (0) 2021.01.31
백준 1106  (0) 2021.01.27
백준 12713  (0) 2021.01.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 27 28 29 30 31
글 보관함