[알고리즘/백준] 15552번 : 빠른 A+B (Java)

2025. 4. 8. 08:21·Programming/Algorithm
문제 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
'Programming/Algorithm' 카테고리의 다른 글
  • [알고리즘/백준] 8393번 : 합 (Java) - 반복문, 수학 공식 사용
  • [알고리즘/백준] 25304번 : 영수증 (Java)
  • [알고리즘/백준] 11382번 : 꼬마 정민 (Java)
  • [알고리즘] 기본적인 정렬 알고리즘
min_sol
min_sol
  • min_sol
    비글개발연구소🐾
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (278)
      • Programming (128)
        • Algorithm (52)
        • JAVA (40)
        • GIS (5)
        • PyQt (10)
        • C# (11)
        • Mobile (6)
        • AI (4)
      • Backend (36)
        • Spring (14)
        • JSP (11)
        • Network (5)
      • Frontend (29)
        • React (11)
        • Vue (13)
        • Next.js (4)
      • Database (10)
        • PostgreSQL (1)
        • Oracle (8)
        • Elasticsearch (1)
      • DevOps (8)
        • Linux (7)
        • Mac (1)
      • Tools (31)
        • IntelliJ (1)
        • GitHub (10)
        • RPA (20)
      • Security (9)
      • etc (21)
        • ERROR (5)
        • 세미나 | 교육 (10)
        • 자격증 (1)
        • 일상 (2)
        • 2021 (2)
  • 인기 글

  • 태그

    알고리즘
    VUE
    vue.js
    자바
    PyQt5
    RPA
    자동화
    생능출판
    스윙
    연습문제
    이클립스
    계산기
    spring
    PyQt
    jsp
    코딩테스트
    Java
    명품자바에센셜
    백준
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[알고리즘/백준] 15552번 : 빠른 A+B (Java)
상단으로

티스토리툴바