Ethan(기린)
그린기린그림 일기
Ethan(기린)
전체 방문자
오늘
어제
  • 전체보기 (43)
    • Language (4)
      • JavaScript (4)
    • Web (0)
      • HTML (0)
    • Problem Solving (29)
      • BOJ (18)
      • 프로그래머스 (10)
    • Computer Science (3)
      • Algorithm & Data Structure (2)
      • Network (1)
    • Error Log (4)
    • Config (1)
      • Test (1)
    • Thinking (2)
      • Retrospect (2)
      • Essay (0)
    • Book (0)

인기 글

최근 글

최근 댓글

태그

  • boj
  • 백준
  • 객체 지향 프로그래밍
  • Java의 정석 3rd Edition
  • Object-oriented programming
  • Problem Solving
  • 알고리즘
  • Lv. 2
  • 프로그래머스
  • OOP
  • JavaScript
  • 완전탐색
  • Java
  • Lv. 1
  • 문자열

티스토리

hELLO · Designed By 정상우.
Ethan(기린)

그린기린그림 일기

Problem Solving/BOJ

백준 10952번 while문 A + B ⑤ - Java

2021. 3. 12. 00:37

www.acmicpc.net/problem/10952

 

10952번: A+B - 5

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

www.acmicpc.net

문제

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

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

입력의 마지막에는 0 두 개가 들어온다.

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

내 코드

import java.util.Scanner;

class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		while(true){
			int num1, num2;
			num1 = scan.nextInt();
			num2 = scan.nextInt();
			if (num1==0 && num2==0) {
				break;				
			}
			System.out.println(num1 + num2);
		}
		scan.close();
	}
}

생각해야 할 것

  1. 두 정수의 입력 값이 공백 하나를 기준으로 구분되어 주어진다.
  2. 마지막은 두 정수가 모두 0인 입력 값이 들어온다. (이 입력 값을 while문의 종료 조건으로 넣어야 한다는 뜻)

개선된 답안 (개선된 코드)

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

class Main{
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st;
		
		while(true){
		
			st =  new StringTokenizer(br.readLine()," ");
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			
			if (A==0 && B==0) {
				break;				
			}
			System.out.println(A + B);
		}
	}
}

Scanner는 연속된 입력 값을 처리하는데, 속도가 느린 편이다. 그래서 보다 빠른 입력이 필요로 하는 경우 다른 입력방식인 BufferedReader을 사용한다. readLine은 리턴 값으로 String을 돌려주기 때문에 다른 타입이 필요로 하는 경우 형변환을 꼭 처리해주어야 한다. 그리고 항상 예외처리를 해주어야 하기 때문에 try & catch 또는 throws문을 추가한다.

또한 Line단위로 데이터를 받아오기 때문에 공백 단위로 데이터를 작업하려면 StringTokenizer 또는 String.split을 이용하여 처리해야 한다. 

저작자표시 비영리 (새창열림)

'Problem Solving > BOJ' 카테고리의 다른 글

[백준 2562번/1차원 배열] 최댓값 - Java  (0) 2021.03.15
[백준 10818번/1차원 배열] 최소, 최대 - Java  (0) 2021.03.15
백준 10950번 for문 A+B ③ - Python  (0) 2021.02.17
백준 2379번 for문 구구단 - Python  (0) 2021.02.17
백준 2884번 if문 알람 시계 - Python  (0) 2021.02.17
    'Problem Solving/BOJ' 카테고리의 다른 글
    • [백준 2562번/1차원 배열] 최댓값 - Java
    • [백준 10818번/1차원 배열] 최소, 최대 - Java
    • 백준 10950번 for문 A+B ③ - Python
    • 백준 2379번 for문 구구단 - Python
    Ethan(기린)
    Ethan(기린)

    티스토리툴바