728x90
반응형
https://www.acmicpc.net/problem/15552
문제
문제 풀이
- 시간제한은 1.5초다. 즉 1500ms 이내여야 한다.
- Scanner 사용하면 시간초과된다.
- System.out.printn 도 사용하면 시간초과된다.
주의할 점을 생각해서 코드를 작성해 보자!
import java.io.*;
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));
int T = Integer.parseInt(br.readLine());
for (int i =0; i < T; i++) {
String[] input = br.readLine().split(" ");
int N = Integer.parseInt(input[0]);
int M = Integer.parseInt(input[1]);
bw.write((N + M) + "\n");
}
br.close();
bw.flush();
bw.close();
}
}
코드 풀이
입력은 한 가지 방법으로 (BufferedReader) 사용하며 출력을 다르게 사용한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // BufferedReader 객체 생성. 입력을 빠르게 처리하기 위한 클래스
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // BufferedWriter 객체 생성. 출력을 빠르게 처리하기 위한 클래스
입력을 빠르게 처리하기 위한 BufferedReader와 출력을 빠르게 처리하기 위한 BufferedWriter객체를 생성합니다.
InputStreamReader와 OutputStreamWriter는 각각 바이트 기반 스트림을 문자 기반 스트림으로 연결해 주는 역할을 합니다.
int T = Integer.parseInt(br.readLine()); // 테스트 케이스의 개수를 입력받음
테스트 케이스의 개수를 읽어 들입니다.
for (int i =0; i < T; i++) {
String[] input = br.readLine().split(" "); // 공백을 기준으로 문자열을 분리하여 문자열 배열로 저장
int N = Integer.parseInt(input[0]); // 첫 번째 숫자를 정수로 변환하여 저장
int M = Integer.parseInt(input[1]); // 두 번째 숫자를 정수로 변환하여 저장
bw.write((N + M) + "\n"); // N과 M을 더한 결과를 출력 버퍼에 작성후, 줄 바꿈 문자(\n)으로 구분하여 새로운 줄에 출력
}
테스트 케이스의 개수만큼 반복하는 for 루프입니다.
입력받은 문자열을 공백을 기준으로 분리하여 문자열 배열로 저장하고, 이를 정수로 변환하여 각각 N과 M에 저장합니다.
N과 M을 더한 결과를 BufferedWriter를 통해 출력 버퍼에 작성합니다. "\n"은 줄 바꿈 문자로, 각 테스트 케이스의 출력이 새로운 줄에 나타날 수 있도록 합니다.
br.close(); // BufferedReader를 닫음
bw.flush(); // BufferedWriter의 버퍼를 비워서 출력
bw.close(); // BufferedWriter를 닫음
BufferedReader와 BufferedWriter를 사용한 후에는 반드시 close() 메서드로 자원을 해제해야 합니다.
또한, BufferedWriter의 flush() 메서드를 호출하여 출력 버퍼의 내용을 강제로 출력해야 합니다.
피드백 & 정리
이번 계기로 BufferedReader, BufferedWriter 등을 알았다.
성능에 대해서는 Scanner 보다는 확실히 BufferedReader 가 더 빠른 것도 알 수 있었다.
익숙하긴 하지만 BufferedReader 위주로 많이 코드를 작성해볼까도 한다.
앞으로의 알고리즘 문제는 아예 모르겠다 말고는 Scanner 보다는 BufferedReader 위주로 사용해보려고 해 보겠다!!

깃 허브 코드
https://github.com/CHUNYOUNGSANG/Algorithm_Judge/blob/main/boj/java/step/b_03_loop/p_15552.java
Algorithm_Judge/boj/java/step/b_03_loop/p_15552.java at main · CHUNYOUNGSANG/Algorithm_Judge
Contribute to CHUNYOUNGSANG/Algorithm_Judge development by creating an account on GitHub.
github.com
반응형
'JAVA - 백준 [BAEK JOON] > 반복문' 카테고리의 다른 글
[백준] 11022번 : A + B - 8 -JAVA (자바) (0) | 2024.05.26 |
---|---|
[백준] 11021번 : A + B - 7 - JAVA (자바) (0) | 2024.05.04 |
[백준] 25314번 : 코딩은 체육과목 입니다 - JAVA (자바) (0) | 2024.05.04 |
[백준] 25304번 : 영수증 - JAVA (자바) (0) | 2024.05.04 |
[백준] 8393번 : 합 - JAVA (자바) (0) | 2024.04.21 |