풀이방법
사용된 것:
BufferedReader
BufferedWriter
2022.03.29
빠른 입출력 방식을 사용해야 풀리는 문제이다.
Scanner와 System.out.print의 반복적인 사용으로는 풀 수 없다.
BufferedReader, BufferedWriter, StringBuilder 등을 사용하면 된다.
문제는 쉽지만 궁금증이 하나 생겨서 적어둔다.
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 t = Integer.parseInt(br.readLine());
for(int i = 0; i<t; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
bw.write(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()));
bw.write(System.lineSeparator());
}
bw.flush();
bw.close();
}
}
위와 같은 코드에
5
1 1
12 34
5 500
40 60
1000 1000
위와 같은 입력값을 넣으면
.
?
d
?
위와 같은 이상한 값이 출력된다.
백준에서도 오답 처리된다.
System.lineSeparator() 대신 "\n"를 넣어봐도 동일하다.
그러나 아래의 정답 코드에서처럼
bw.write(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()) + System.lineSeparator());
이렇게 한 문장 안에서 개행문자를 함께 추가하면
문제없이 올바른 값이 출력된다...
개행문자의 추가 시점을 바꾼 것 뿐인데 왜 이런 이상한 결과가 나오는 것일까?
StringBuilder에서는 이런 문제가 발생한 적이 없는데 이상하다.
개행문자만 단독으로 write하면 문제가 생기는 것일까?
정말 궁금하다... 꼭 알아봐야겠다.
코드
Java(2022.03.29)
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 t = Integer.parseInt(br.readLine());
for(int i = 0; i<t; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
bw.write(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()) + System.lineSeparator());
}
bw.flush();
bw.close();
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#2294 : 동전 2 (0) | 2022.03.30 |
---|---|
#1110 : 더하기 사이클 (0) | 2022.03.29 |
#1003 : 피보나치 함수 (0) | 2022.03.28 |
#11723 : 집합 (0) | 2022.03.28 |
#15312 : 이름 궁합 (0) | 2022.03.27 |