일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리눅스
- String클래스
- 반복문
- 데이터 조회
- order by
- github
- scanner
- select문
- 프론트엔드
- BufferedReader
- MySQL
- 정보처리기사
- 웹개발
- html
- 프로그래머스 SQL
- sql문
- select
- 자바
- DML
- 형변환
- 메서드
- 입출력
- 프로그래머스 sql 고득점 kit
- 정보처리기사필기요약
- 자바스크립트
- 프로그래밍
- 백준
- StringBuilder
- where
- Git
- 클래스
- for문
- SQL
- JavaScript
- Linux
- 백엔드
- 알고리즘
- 예외처리
- Java
- 개발자
- Today
- Total
ToBe끝판왕
[ 알고리즘 ] 백준 10951번 문제 - 자바( JAVA ) 본문

주의사항
※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.
백준 10951번 문제
백준 알고리즘의 단계별 문제 풀기
3단계 < 반복문 >


▶ 해당 문제 링크
https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
코딩 하기
1) Scanner 사용
import java.util.Scanner;
public class Main {
public static void main( String args[] ) {
Scanner sc = new Scanner( System.in );
while( sc.hasNextInt() ) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println( a + b );
}
sc.close();
}
}
2) BufferedReader 사용
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 ) );
StringBuilder sb = new StringBuilder();
StringTokenizer st;
String str;
while( ( str = br.readLine() ) != null ) {
st = new StringTokenizer( str, " " );
int a = Integer.parseInt( st.nextToken() );
int b = Integer.parseInt( st.nextToken() );
sb.append( a + b ).append( "\n" );
}
System.out.print( sb );
}
}
문제 해결
※ 주의사항
• 두 정수는 공백으로 나뉘어 구분된다.
• 입력의 종료는 더이상 읽어올 수 있는 데이터 ( EOF ) 가 없을때 종료된다.
※ EOF 란 ?
End of File 의 약자로, 데이터 소스로부터 더이상 읽을 수 있는 데이터가 없음을 나타내는 용어이다.
알고리즘에서는 입력값을 얼마나 받을수 있는지 명시하지 않을 경우 EOF를 사용한다.
그래서 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하는 것이다.
1) Scanner 사용
• Scanner클래스의 메서드들 경우 더이상 읽을 데이터가 없다면 아래 사진과 같이
NoSuchElementException 이 발생하게 된다.
• 예외를 처리하기 위해 두가지 방법이 있다
- try ~ catch문으로 예외 발생시 반복문을 종료해주도록 처리
- Scanner 메서드인 hasNext()을 통해 처리

• hasNextInt( ) , hasNext( ) 둘중 하나 사용 가능 => 입력이 들어오지 않기 때문에 예외의 형태는 같다.
• nextInt( ) 를 통해서 정수를 입력받아, 통일시키기 위해 hasNextInt( ) 를 사용하였다.
• hasNextInt( )는 입력값이 정수이다면 true 반환, 정수가 아닐 경우에는 예외를 발생시키고
false를 반환하며 반복문이 종료된다.
while( sc.hasNextInt() ) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println( a + b );
}
2) BufferedReader 사용
여러번 말씀드렷다시피 BufferedReader는 readLine( ) 을 통해 한 행을 정부 읽기 때문에, 공백단위로 입력해 준
문자열을 공백단위로 분리해주어야 알고리즘 문제를 풀수 있다.
• 문자열 분리 방법 2가지
- StringTokneizer 클래스 이용
- Split( ) 메서드 이용
• st.nextToken( ) 은 문자열을 반환하기 때문에 Integer.parseInt( ) 로 int형으로 형변환은 필수이다.
• str에 저장된 데이터가 null일 경우, while반복문을 종료시키고 아닐경우 반복문을 계속 수행하도록 한다.
while( ( str = br.readLine() ) != null ) {
st = new StringTokenizer( str, " " );
int a = Integer.parseInt( st.nextToken() );
int b = Integer.parseInt( st.nextToken() );
sb.append( a + b ).append( "\n" );
}
System.out.print( sb );
'■ 알고리즘 > 백준 JAVA' 카테고리의 다른 글
[ 알고리즘 ] 백준 10818번 문제 - 자바( JAVA ) (0) | 2022.05.31 |
---|---|
[ 알고리즘 ] 백준 1110번 문제 - 자바( JAVA ) (0) | 2022.05.27 |
[ 알고리즘 ] 백준 10871번 문제 - 자바( JAVA ) (0) | 2022.05.27 |
[ 알고리즘 ] 백준 2439번 문제 - 자바( JAVA ) (0) | 2022.05.26 |
[ 알고리즘 ] 백준 11021번 문제 - 자바( JAVA ) (0) | 2022.05.26 |