| 문제 | 15552번 : 빠른 A+B |
| 문제링크 | https://www.acmicpc.net/problem/15552 |
| 난이도 | B4 |
| 언어 | Java |
| 분류 | 입출력 | 수학, 구현, 사칙연 |


이전에 풀었던 문제에서 조금 심화된 버전으로,
2025.04.07 - [알고리즘] - [알고리즘/백준] 11382번 : 꼬마 정민 (Java)
[알고리즘/백준] 11382번 : 꼬마 정민 (Java)
문제11382번 : 꼬마 정민문제링크https://www.acmicpc.net/problem/11382난이도B5언어Java분류입출력 | 수학, 구현, 사칙연산 스캐너로 입력한 문장을 공백 기준으로 나눠서 각 3개의 합을 구하는 문제를 풀
0206cho.tistory.com
속도향상을 위해 Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용하는 문제였다.
최종 정답 코드는 다음과 같다.
우선 BufferedReader와 BufferedWriter를 사용하기 위해 필요한 라이브러리를 import하였다.
그리고 해당 라이브러리를 사용할 수 있게 br, bw 명칭으로 선언 및 할당해주었다.
우선 처음에 입력받은 값은 반복할 횟수이므로 받은 값을 정수로 변환하여 반복문을 돌려주었다.
그다음 입력 받은 값은 br.readLine()을 통해 한 줄의 문자열을 읽어왔다.
문자는 저번과 마찬가지로 공백을 기준으로 나눠서 배열에 저장한 후 배열의 개수만큼 반복문을 돌려 정수형으로 변환하여 더해주었다. 그 다음 bw은 문자열이기 때문에 String.valueOf()를 통해 문자열로 변환해서 write() 메서드를 이용하여 출력하였다.
맨 마지막에 bw.flush(); 를 통해 버퍼에 쌓여 있는 출력 내용을 전부 내보내고,
bw.close();를 통해 모든 출력이 끝난 후 스트림을 닫아 자원 누수를 방지해주었다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cnt = Integer.parseInt(br.readLine());
for(int i=0; i<cnt; i++){
String inputs = br.readLine();
String[] values = inputs.split(" ");
long sum = 0;
for(String value : values){
long temp = Long.parseLong(value);
sum += temp;
}
bw.write(String.valueOf(sum) + "\n");
}
bw.flush();
bw.close();
}
}
이번에는 3회차 만에 통과하였다.
1회차는 형 변환에서 컴파일 에러가 발생하였고, 2회차는 br.readLine()를 사용하는데 예외처리를 안해줘서 다시 컴파일 에러가 발생하였었다. readLine()은 "Checked Exception(체크 예외)"를 던지는 메서드이기 때문이다.

📌 시간복잡도
이 문제의 시간복잡도는 O(T)입니다.
T의 크기(입력의 크기)에 따라 시간이 선형적으로 증가한다는 의미입니다.
코드를 전체적으로 살펴보면 for문이 한번 존재하며, T번 반복됩니다.
이 경우 시간복잡도는 O(T)로 계산됩니다.
문제의 조건에 따라 T는 최대 1,000,000입니다.
따라서 최대 연산은 1,000,000개 소요되며 이는 시간초과에 걸리지 않고 가능한 연산의 개수 입니다.
🍯 TIP ! 코딩테스트 문제를 풀며 시간초과에 걸리지 않을지 판단하기 위해 시간복잡도를 사용할 수 있습니다. 내가 설계한 코드의 시간복잡도를 계산하고, 이를 토대로 연산의 개수를 구합니다.
시간제한 1초는 대략 1억개의 연산까지 가능하다고 생각하시면 됩니다. (완전 정확한 수치는 아니지만, 통상적으로 이렇게 계산합니다.)
'Programming > Algorithm' 카테고리의 다른 글
| [알고리즘/백준] 8393번 : 합 (Java) - 반복문, 수학 공식 사용 (1) | 2025.04.10 |
|---|---|
| [알고리즘/백준] 25304번 : 영수증 (Java) (1) | 2025.04.09 |
| [알고리즘/백준] 11382번 : 꼬마 정민 (Java) (1) | 2025.04.07 |
| [알고리즘] 기본적인 정렬 알고리즘 (0) | 2023.06.21 |
| [알고리즘] 멱집합 powerset (0) | 2023.06.20 |
