[★1][백준10951번]A+B - 4 (JAVA)

Date:     Updated:

카테고리:

태그:

[★1][백준10952번]A+B - 4 (JAVA)

10951번 문제 ☞ https://www.acmicpc.net/problem/10951

난이도 ☞ [★1]

A+B - 4

  • 문제
    • 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
    • 입력은 여러 개의 테스트 케이스로 이루어져 있다.
      각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
      입력의 마지막에는 0 두 개가 들어온다.
    • 각 테스트 케이스마다 A+B를 출력한다.

      예제입력 예제출력
      1 1
      2 3
      3 4
      9 8
      5 2
      2
      5
      7
      17
      7

내가 푼 풀이

While문과 EOF(더 이상 읽을 수 없는 데이터)가 있을 때 종료를 시키는 문제인데, 종료시점을 몰라 틀리는 경우가 많아보인다. 들어가기에 앞서 EOF에 대해 약간의 설명을 하고자한다.

EOF

  • 입력에서 읽을 수 있는 데이터가 더 이상 존재하지 않을 때 반복문을 종료하라는 것이다.
  • EOF = End Of File, 파일의 끝

위를 토대로 코드를 작성해보겠습니다. try-catch문으로도 예외 발생 처리를 할 수 있지만, Scanner를 토대로 hasNextInt()를 통해 처리하는 코드이다.

[ 풀이 1 ]

메모리 : 17960KB
시간 : 232ms

Scanner

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);

		while (s.hasNextInt()) {
			int a = s.nextInt();
			int b = s.nextInt();

			System.out.println(a + b);
		}
		s.close();
	}

}

위의 방식은 제일 기본적인 Scanner방식입니다. 다음 풀이는 BufferedReader만 사용하였을 때는 StringTokenizer를 사용하여 공백을 넣는 방식말고, 이번에는 약간 다르게 BufferedReadercharAt()을 사용하여 코드를 구현해보았다. charAt()은 아스키 코드 값을 반영하기 때문에 정수 형태로 표현하려면 charAt() - 48처럼 -48을 해주면 된다. BufferedReadercharAt()을 사용하여 풀이한 코드는 아래와 같다.

[ 풀이 2 ]

메모리 : 14140KB
시간 : 128ms

BufferedReader

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		String str;

		while ((str = br.readLine()) != null) {
			int a = str.charAt(0) - 48;             // index 0 번째에 저장
			int b = str.charAt(2) - 48;             // index 2 번째에 저장
													// index 1 번은 자연스럽게 공백(" ")이 됨
			sb.append((a+b)).append("\n");
		}
		System.out.println(sb);
	}

}

Scanner보다 BufferedReader가 확실하게 성능면에서 우수한 것을 알 수있다.

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기