📌 문제
문제명 | [백준] 15552 - 빠른 A+B |
Link | https://www.acmicpc.net/problem/15552 |
분류 | 입출력 |
난이도 | B4 |
풀이 일자 | 2025-04-08 |
📌 문제 탐색하기
입출력 방식이 느리면 시간초과 문제가 발생
Java에서 입출력 방식인 Scanner와 System.out.println을 BufferedReader와 BufferedWriter로 변경하여 문제 해결해보기
BufferedReader와 BufferedWriter는 메모리 버퍼를 사용하기에 효율성이 높음
T : 테스트케이스의 개수
A : T줄 입력받는 정수
B : T줄 입력받는 정수
📌 코드 설계하기
- 테스트 케이스(T) 개수를 입력 받기
- T 개수만큼 반복문을 돌리고 숫자를 입력 받아 A와 B를 구분하기
- A,B 더한값 출력
📌 시도 회차 수정 사항 (Optional)
백준 런타임 에러 - 파일명 수정 및 패키지 경로 제거
📌 정답 코드
public class Day02_BaekJoon_Q15552 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
/**
* 문제에서 제시하는 변수
* T : 테스트 케이스 개수
* A : 첫번째 입력 받는 수
* B : 두번째 입력 받는 수
*/
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String[] splitStr = br.readLine().split(" ");
int A = Integer.parseInt(splitStr[0]);
int B = Integer.parseInt(splitStr[1]);
// 버퍼에 담기
bw.write(A + B + "\n");
}
// 버퍼 출력
bw.flush();
bw.close();
}
}
📌 느낀점
입출력이 많을때는 BufferedReader와 BufferedWriter 성능이 높음
📌 시간복잡도
이 문제의 시간복잡도는 O(T)입니다.
T의 크기(입력의 크기)에 따라 시간이 선형적으로 증가한다는 의미입니다.
코드를 전체적으로 살펴보면 for문이 한번 존재하며, T번 반복됩니다.
이 경우 시간복잡도는 O(T)로 계산됩니다.
문제의 조건에 따라 T는 최대 1,000,000입니다.
따라서 최대 연산은 1,000,000개 소요되며 이는 시간초과에 걸리지 않고 가능한 연산의 개수 입니다.
🍯 TIP ! 코딩테스트 문제를 풀며 시간초과에 걸리지 않을지 판단하기 위해 시간복잡도를 사용할 수 있습니다. 내가 설계한 코드의 시간복잡도를 계산하고, 이를 토대로 연산의 개수를 구합니다.
시간제한 1초는 대략 1억개의 연산까지 가능하다고 생각하시면 됩니다. (완전 정확한 수치는 아니지만, 통상적으로 이렇게 계산합니다.)
'알고리즘, 자료구조' 카테고리의 다른 글
[코딩 챌린지 11기 새싹반] 백준 2738 - 행렬 덧셈 (Java) (1) | 2025.04.12 |
---|---|
[코딩 챌린지 11기 새싹반] 백준 10818 - 최소, 최대 (Java) (1) | 2025.04.11 |
[코딩 챌린지 11기 새싹반] 백준 8393 - 합 (0) | 2025.04.10 |
[코딩 챌린지 11기 새싹반] 백준 25304 - 영수증 (0) | 2025.04.09 |
[코딩 챌린지 11기 새싹반] 백준 11382 - 꼬마 정민 (0) | 2025.04.07 |