https://www.acmicpc.net/problem/10952
- 문제
입력으로 두개의 정수를 받고 (공백을 기준으로 나눠야 하니 split이나 StringTokenizer이 필요할수도 있다)
출력문에는 그 두 정수의 합을 출력한다.
단, 0을 두번 입력했을 경우 테스트를 종료한다.
- 코드 1
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(true){
int A=in.nextInt();
int B=in.nextInt();
if(A==0 && B==0){
in.close();
break;
}
System.out.println(A+B);
}
}
}
0 0을 입력하면 종료하는걸 감지는 조건문 if에 A와 B의 입력이 0으로 들어왔을경우 입력을 종료하고 break로 while 의 loop를 종료하게 설정하면된다.
- 결과
- 코드 2
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));
StingTokenizer 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);
}
}
loop문 안에 StringTokenizer을 선언해주게 되면 br.readLine()으로 읽어들인 다음 공백을 기준으로(스페이스바 눌러줘야함) 선언된 변수의 개수만큼(A,B선언 했으니 숫자 2번만 입력가능) 입력하게 해준다. 이후 엔터를 누르면 줄이 바뀌면서 계속 새로운 숫자를 입력할 수 있게 된다.
숫자 스페이스바 숫자 엔터
숫자 스페이스바 숫자 엔터
숫자 스페이스바 숫자 엔터
0 스페이스바 0
loop종료
출력
이런방식으로 동작하게 되는 셈이다.
- 결과
- 코드 3
https://kindstudent.tistory.com/56
좀 더 효율적인 코드작성을 위해 Integer.parseInt(sb.nextToken()); 이 아닌, charAt을 사용할것이다. 관련 설명은 이전포스팅 2588번을 참고하면 좋다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb=new StringBuilder();
while(true){
//한줄단위로 '문자열' String으로 읽는다.
String str=br.readLine();
//-48 또는 -'0'
int A=str.charAt(0)-48;
int B=str.charAt(2)-48;
if(A==0&& B==0){
break;
}
sb.append((A+B)).append('\n');
}
System.out.println(sb);
}
}
- 결과
- 코드 1, 2 성능 비교
BufferedWriter은 규모가 큰 출력에는 빠르지만, 보통 하나의 문자열로 묶어서 스트림으로 보낼땐 StringBuilder을 사용하는게 일반적이다. BufferedWriter의 버퍼에 담아두었다 출력을 하는거나 append에 담아서 보내거나 사실 큰차이는 없다.
'Computer Science > BAEKJOON JAVA Practice' 카테고리의 다른 글
[백준]1110번: 더하기 사이클 (0) | 2022.01.14 |
---|---|
[백준]10951번: A+B-4 (0) | 2022.01.14 |
[백준]10871번: X보다 작은 수 (0) | 2022.01.13 |
[백준]2439번: 별 찍기 -2 (0) | 2022.01.13 |
[백준]2438번: 별 찍기 -1 (0) | 2022.01.12 |