[백준 문제 풀이] 2745번 진법 변환

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

[2745] 진법 변환

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


문제 요약

  • 문제 유형: 수학, 진법 변환, 구현
  • 요구사항: N진법 수 X가 주어졌을 때, 이를 10진법으로 변환한 값을 출력해야 한다.

사용 개념

  1. 자료구조

    • String, char[]
  2. 알고리즘/기법

    • 진법 변환, 내장 함수 활용 (Integer.parseInt)
  3. 핵심 키워드

    • 진법 변환(Base conversion), 아스키 코드(문자-숫자 변환)

풀이 아이디어 및 코드

  1. 문제 분해
    • 입력으로 "숫자 문자열 N"과 "진법 B"가 들어옴 (예: "ZZZZZ 36")
    • 해당 문자열을 B진법에서 10진법으로 변환해야 함
  2. 핵심 로직 흐름
    - 입력을 공백 기준 분리
    - arr[0]: 변환할 숫자 문자열, arr[1]: 진법
    - Integer.parseInt(arr[0], arr[1])를 사용해 10진법으로 변환
    - 변환 결과 출력
  3. 예외 처리
    • 진법이 10보다 크고, 알파벳이 포함된 입력도 고려
    • Java에서 내장된 진법 변환 함수 사용 시 특별한 예외는 없음
import java.util.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] arr = br.readLine().split(" ");
        System.out.println(Integer.parseInt(arr[0], Integer.parseInt(arr[1])));
    }
}

시간·공간 복잡도

  • 시간 복잡도: O(L) (L은 입력 문자열의 길이)
  • 공간 복잡도: O(1)

어려웠던 점

  • 진법 변환 알고리즘을 직접 구현한 경험이 없어, 내장 함수를 활용하는 방법을 바로 떠올리지 못했다.
  • 10진법 이상의 진법에서 알파벳을 어떻게 처리할지 헷갈렸다.
  • 관련 블로그(https://cornarong.tistory.com/48)를 참고하여 내장 함수 사용법을 익혔다.

배운 점 및 팁

  • Java의 Integer.parseInt("문자열", 진법) 메서드를 사용하면 직접 진법 변환 알고리즘을 구현하지 않아도 쉽고 빠르게 처리 가능하다.
  • 10~36진법까지 지원하며, 알파벳(A~Z)은 10~35에 매핑된다.
  • 입출력 처리 시에는 BufferedReader를 사용하면 입력 속도가 빨라진다.

참고 및 링크


추가 연습 문제

  • 비슷한 유형:
  • 확장 문제:
    • 임의의 진법 N, M 사이에서 상호 변환
    • 36진법 이상의 진법 구현 (예: 62진법 등)
profile
생각이 현실이 될 수 있도록 노력하는 중입니다.

0개의 댓글