
✅ 문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
📥 입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
입력의 마지막에는 0 두 개가 들어온다.
📥 출력
각 테스트 케이스마다 A+B를 출력한다.
💡 풀이
✅ 1. Scanner
틀린 코드 ▼
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
if (a == 0 && b == 0)
break;
}
}
}
입력이 끝나는 시점을 제대로 처리하지 않아서 틀렸다. 사용자가 두 개의 0을 입력하면 a+b를 출력하지 않고 그대로 무한 루프를 탈출하도록 설정되어 있지만, 나는 입력 후 바로 출력하도록 해 놓았기 때문에 break가 걸리기 전에 0+0 값인 0을 출력하게 된다. 또 Scanner를 사용 했으면 닫아 주는게 좋다.
수정한 코드 ▼
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int a = sc.nextInt();
int b = sc.nextInt();
if (a == 0 && b == 0)
break;
System.out.println(a + b);
}
sc.close(); // Scanner 객체를 닫아줍니다.
}
}
✅ 2. BufferedReader
import sys
words = sys.stdin.readlines()
for word in words:
print(word.rstrip())
더 빠르게 입력받기 위해 Scanner 대신 BufferedReader 을 써 줘도 된다. 하지만 이 때 기억해주어야 할 것이 Scanner과 다르게 BufferedReader.readLine() 은 문자열 한 줄을 통째로 한 번에 입력받기 때문에 사이에 있는 공백까지 입력을 받는다. 그래서 공백을 기준으로 해서 문자열을 분리해주는 작업을 해 주어야 한다.
StringTokenizer : 문자열 분리 후 꺼내옴
st.nextToken() : 문자열 반환
하지만 데이터가 숫자라면 Integer.parseInt()로 int 형으로 변환시켜주어야 한다.
StringBuilder : A와 B를 더한 결과를 추가. 이 때 .append()사용
반복문을 빠져나오면 StringBuilder에 저장된 결과를 출력해준다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
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;
}
sb.append((A+B)).append('\n');
}
System.out.println(sb);
}
}
'코딩테스트 > BaekJoon' 카테고리의 다른 글
여러가지 모양으로 별찍기 (자바 for문) (0) | 2024.04.23 |
---|---|
[백준] 2438번 : 별 찍기 - 2 ( 자바 / java ) (0) | 2024.04.23 |
[백준] 2438번 : 별 찍기 - 1 ( 자바 / java ) (0) | 2024.04.23 |
[백준] 11022번 : A+B-8 자바 / java (1) | 2024.04.23 |
[백준] 11021번 : A+B-7 자바 / java (1) | 2024.04.23 |