일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 브루트포스트
- 브루트포스
- 10845번
- 4153번
- 자바
- 1436번
- 2231번
- 2798번
- 백준
- 3052번
- 2744번
- 2920번
- 15552번
- 2439번
- 10250번
- 1259번
- 1978번
- 10818번
- 코딩
- 31403번
- 5597번
- 8959번
- 팰린드롬수
- Java
- 11654번
- 11718번
- 2292번
- 15829번
- 2675번
- 10828번
- Today
- Total
서비스 기획자 기록
[백준] 15552번 : 빠른 A+B - Java 본문
https://www.acmicpc.net/problem/15552
- 문제
- 풀이
- BufferedReader와 BufferedWriter를 이용한 빠른 입출력
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 {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine()," ");
bw.write((Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken()))+"\n");
}
br.close();
bw.flush();
bw.close();
}
}
기존의 Scanner 방식은 사용하기엔 편하지만 입출력 과정에서 시간이 걸린다.
이에 대한 자세한 내용은
JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]
이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고
st-lab.tistory.com
에서 잘 설명해 주셨다.
문제는 Scanner가 아닌 더 빠른 입출력을 활용해야 한다는 조건이 걸려있다.
따라서 입출력에 BufferedReader와 BufferedWriter를 이용해 보려고 한다.
먼저 IOException으로 예외처리를 한 뒤, 각각의 객체를 생성하고, StringTokenizer 객체까지 생성한다.
BufferedReader의 경우 '개행문자' 기준, String으로만 입력을 받기 때문에 입력받은 데이터의 가공이 필요하다.
이때 자주 이용하는 게 StringTokenizer와 parseInt()이다.
입력받은 데이터를 StringTokenizer를 사용해 " " 단위로 잘라주면 띄어쓰기를 기준으로 nextToken()으로 가져올 수 있다.
nextToken()은 토큰 단위로 하나씩 가져온다고 생각하면 된다.
또한 앞서 언급했듯이 BufferedReader는 String타입으로만 입력받을 수 있기 때문에 int 타입이 필요하다면 parseInt()를 통해 int 타입으로 변환해야 한다.
마지막으로 BufferedWriter를 통해 출력을 하면 된다.
차음엔 Scanner로 푸는 것에 익숙해서 다른 방식의 입출력은 어려웠는데 생각보다 금방 익숙해지니 걱정할 필요없다!
'백준' 카테고리의 다른 글
[백준] 5597번 : 과제 안 내신 분..? - Java (0) | 2025.01.05 |
---|---|
[백준] 2744번 : 대소문자 바꾸기 - Java (0) | 2025.01.05 |
[백준] 2675번 : 문자열 반복 - Java (1) | 2025.01.05 |
[백준] 11718번 : 그대로 출력하기 - Java (0) | 2025.01.05 |
[백준] 11654번 : 아스키 코드 - Java (0) | 2025.01.04 |