일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 탑스팟
- 디코더
- 논리회로
- 정처기 필기
- 2017년
- 전산직
- 정처기
- 지방직
- 정보처리기사 필기
- 컴퓨터
- 컴퓨터일반
- 2017년 컴퓨터일반
- 컴일
- 멀티플렉서
- 정보처리기사
- 인코더
- 카르노맵
- 탑스팟 컴퓨터일반
- It
- 국가직
- 공단기 컴퓨터일반
- 공단기
- 2018년
- 2019년
- 계리직
- 9급
- 서울시
- 2019년 컴퓨터일반
- 2019년 계리직 컴퓨터일반
- 2019년 계리직
- Today
- Total
Don't Look Back In Anger
백준 15552번. 빠른 A+B 본문
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
bw.write((Integer.parseInt(st.nextToken())) + (Integer.parseInt(st.nextToken())) + "\n");
}
br.close();
bw.flush();
bw.close();
}
}
* read()와 readLine()의 차이
BufferedReader를 쓸 때 read()와 readLine() 두 가지를 사용할 수 있는데
둘 다 예제를 그대로 입력창에 복사 붙여넣기 하면
read()는 출력을 안하고 계속 입력상태에 머물고 있고
readLine() 같은 경우는 오류가 나버립니다.
일반적으로 BufferedReader 를 통해 입력받을때 유의하셔야 할 점이 몇가지 있습니다.
1. 기본적으로 BufferedReader는 한 줄을 통째로 입력받는 방법으로 주로 쓰입니다.
2. readLine() 메서드는 값을 읽어올 때, String값으로 개행문자(엔터값)를 포함해 한줄을 전부 읽어오는 방식입니다.
- 비슷한 예로 Scanner메서드 중 nextLine()도 스트링 값과 개행문자(엔터값)을 같이 읽어옵니다. (반면 next()는 개행문자는 제외하고 스트링 값만 읽어옵니다.)
- 예제의 입력 예제를 보면 각 문장이 모두 개행문자(엔터)로 구별되있는것을 확인하실 수 있습니다. 따라서 이 문제에서 개행문자를 입력받는것은 필수입니다!
3. read() 메서드는 값을 읽어올 때, int값으로 변형하여 읽어오는 방식입니다.
- 예를들어 input.txt에 저장된 1이라는 숫자를 read()를 통해 읽어오면 int형 숫자 1을 읽어오는 것이 아닌, txt형식으로 저장된 ASCII 형식의 문자값 '1'을 읽어오는 것이므로 결국 int값으론 49를 읽어오는 것이 됩니다.
- 이를 해결하려면 int a = br.read() - 48; br.readLine(); 을 하여 ASCII 값에서 뻴셈을 이용한 뒤 엔터 값을 읽어오거나,
int a = Integer.parseInt(br.readLine()); 를 통해 엔터값을 포함해 한줄을 통째로 입력받은 뒤 해당 스트링값을 int로 형변환 해주는 방법이 있습니다.
* StringTokenizer 클래스
- 하나의 문자열을 여러 개의 문자열로 분리하기 위해 사용된다.
- 문자열을 분리할 때 사용되는 기준 문자를 구분 문자(delimiter)라고 하고, 구분 문자로 분리된 문자열을 토큰(token)이라고 한다.
- 토큰을 하나씩 얻기 위해서는 nextToken() 메소드를 이용한다.
'IT > 백준' 카테고리의 다른 글
백준 8958번. OX퀴즈 (0) | 2022.05.01 |
---|---|
백준 2355번. 시그마 (0) | 2022.04.26 |