[백준 문제 풀이] 15894번 수학은 체육과목 입니다

Junu Kim·2025년 7월 21일
0
post-thumbnail

[15894] 수학은 체육과목 입니다

난이도: ★☆☆☆☆ • solved on: 2025-07-21


문제 요약

  • 문제 유형: 수학, 구현
  • 요구사항: 주어진 정수 n (1 ≤ n ≤ 109)에 대해, 그림으로 만들어진 도형의 둘레 길이를 구해 출력해야 한다.

사용 개념

  1. 자료구조

    • 기본 자료형: long (64-bit 정수)
  2. 알고리즘/기법

    • 단순 산술 연산
  3. 핵심 키워드

    • 정수형 오버플로 (integer overflow)

풀이 아이디어

  1. 문제 분해
    • 가장 아랫줄에 붙는 정사각형이 1개씩 늘 때마다 둘레가 4씩 증가한다는 규칙을 관찰.
  2. 핵심 로직 흐름
    n 입력
    결과 = n × 4
    출력 결과
  3. 예외 처리
    • 입력 범위가 최대 109이므로 int(약 2.1 × 109)로는 4 × n 계산 시 오버플로 위험 → long 사용.
    • 더 큰 수일경우 BigDecimal을 활용할 수 있지만, 이번 문제에서는 불필요하다.

코드

import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        long n = Long.parseLong(br.readLine());   // BigDecimal 불필요, 바로 long 파싱
        System.out.println(n * 4);
    }
}

시간·공간 복잡도

  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)

어려웠던 점

  • 처음에 int를 사용해 오버플로가 발생해 정답이 출력되지 않았다. (각 정수형 변수의 범위에 대한 이해가 부족했다.)

배운 점 및 팁

  • 형 안전성을 위해 입력 범위와 연산 결과가 int 한계를 넘을 가능성이 있는지 항상 확인하는 습관이 필요하다.
  • BigDecimal / BigInteger는 정말 큰 수(> 64-bit)나 부동소수 정밀도가 필요할 때만 사용하면 된다.

참고 및 링크


추가 연습 문제

profile
생각이 현실이 될 수 있도록 노력하는 중입니다.

0개의 댓글