15552 - 빠른 A + B알고리즘/백준2023. 8. 16. 21:44
Table of Contents
지금 까지의 입력은 Scanner클래스, 출력은 System.out.println()을 통하여 이루어졌다.
15552번 문제에도 똑같이 Scanner클래스와 System.out.println을 사용하면 오답으로 처리되는데 그 이유는
문제의 정답조건중에 속도 제한이 있기때문이다.
따라서 우리는 새로운 입출력 방법을 사용하여 문제를 제출하여야한다.
그 방법에는 두 가지 방법이 있다.
1. StringBuilder로 하나의 문자열로 계속 연결시킨 뒤 가장 마지막에 연결된 하나의 문자열을 출력시키는 방법
2. BufferedWriter로 버퍼에 담아뒀다가 한 번에 데이터를 내보내는 방법
방법1.
package boj;
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));
//Scanner.nextInt()같은 역할
int N = Integer.parseInt(br.readLine());
//write()메서드를 통해 출력될 값을 저장해두는 곳
StringTokenizer st;
for(int i = 1; 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();
}
}
입력은 BufferedReader.readLine()을 통해 받으며 A+B를 위한 두 정수는 " "을 기준으로 분리하여 입력받는다.
br.readLine()을 통해 입력받는 값은 모두 String타입이기 때문에 Integer.parseInt로 정수로 변환해주어야 한다.
방법2.
package boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class b15552 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
StringBuilder sb = new StringBuilder();
for(int i=0; i<N;i++) {
st = new StringTokenizer(br.readLine(), " ");
sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())).append('\n');
}
br.close();
System.out.println(sb);
}
}
흐름은 방법1과 거의 동일하다.
지금의 데이터양으로는 StringBuilder가 약간 더 빠르긴하지만,
데이터의 양이 커지면 커질수록 BufferedWriter를 사용하는 방법이 더욱 빠르다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
2439 - 별 찍기 - 2 (0) | 2023.08.16 |
---|---|
2438 - 별 찍기 - 1 (0) | 2023.08.16 |
25314 - 코딩은 체육과목입니다. (0) | 2023.08.16 |
25304 - 영수증 (0) | 2023.08.16 |
8393 - 합 (0) | 2023.08.16 |
@leegeonwoo :: geonwoo
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!