일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SQL
- sql문
- 개발자
- 클래스
- BufferedReader
- Linux
- order by
- String클래스
- 백준
- where
- 스프링
- mybatis
- 자바
- 입출력
- 리눅스
- 형변환
- Git
- 프로그래머스 SQL
- JavaScript
- select문
- MySQL
- 데이터 조회
- 프론트엔드
- 프로그래머스 sql 고득점 kit
- StringBuilder
- 예외처리
- scanner
- Java
- 자바스크립트
- 알고리즘
- 프로그래밍
- 웹개발
- 정보처리기사필기요약
- 백엔드
- html
- 메서드
- 정보처리기사
- DML
- github
- select
- Today
- Total
ToBe끝판왕
[ 알고리즘 ] 백준 10951번 문제 - 자바( JAVA ) 본문
주의사항
※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.
백준 10951번 문제
백준 알고리즘의 단계별 문제 풀기
3단계 < 반복문 >
▶ 해당 문제 링크
https://www.acmicpc.net/problem/10951
코딩 하기
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 |