[백준] 11576번 : Base Conversion (JAVA)

2026. 4. 12. 00:00·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

https://www.acmicpc.net/problem/11576


📌 문제 개요

백준 11576번은 A진법으로 표현된 수를 B진법으로 변환하는 문제입니다.
입력은 일반적인 문자열 형태가 아니라, 각 자릿수가 공백으로 구분되어 주어진다는 점이 특징

즉, 문제의 핵심은 다음 두 단계입니다.

  • A진법 수를 10진수로 바꾸기
  • 10진수를 다시 B진법으로 바꾸기

진법 변환의 기본 원리를 알고 있으면 어렵지 않게 해결할 수 있는 문제


📌 접근 방법

이 문제는 한 번에 A진법에서 B진법으로 바로 바꾸려고 하기보다,
중간에 10진법으로 변환해서 처리하는 것이 가장 깔끔

 

1. A진법 → 10진법

A진법 수가 자릿수 배열로 주어지므로, 왼쪽부터 하나씩 읽으면서 누적 계산

 

예를 들어 8진수 1 0 1 이라면:

  • 0 * 8 + 1 = 1
  • 1 * 8 + 0 = 8
  • 8 * 8 + 1 = 65

즉, 다음 식으로 처리

decimal = decimal * A + digit;
 

 

2. 10진법 → B진법

10진수를 B진법으로 바꿀 때는 나머지 연산을 사용

  • decimal % B → 현재 자리값
  • decimal /= B → 다음 계산 진행

이 과정을 반복하면 낮은 자리부터 구해지므로, 배열이나 리스트에 저장한 뒤 역순으로 출력


📌 핵심 아이디어

1) 누적 계산으로 10진수 만들기

 

자릿수를 하나씩 보면서

 
decimal = decimal * A + digit;
 

형태로 계산하면 A진법 수를 쉽게 10진수로 바꿀 수 있습니다.

 

2) 나머지는 역순으로 쌓인다

 

B진법으로 바꾸는 과정에서 나오는 나머지는
항상 맨 뒤 자리부터 나오기 때문에, 그대로 출력하면 순서가 반대가 됩니다.

따라서:

  • 리스트에 저장한 뒤
  • 뒤에서부터 출력

📌 전체 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());

        int m = Integer.parseInt(br.readLine());

        StringTokenizer st2 = new StringTokenizer(br.readLine());
        int decimal = 0;

        for (int i = 0; i < m; i++) {
            int digit = Integer.parseInt(st2.nextToken());
            decimal = decimal * A + digit;
        }

        ArrayList<Integer> result = new ArrayList<>();

        while (decimal > 0) {
            result.add(decimal % B);
            decimal /= B;
        }

        for (int i = result.size() - 1; i >= 0; i--) {
            System.out.print(result.get(i) + " ");
        }
    }
}

📄 정리

백준 11576번은 전형적인 진법 변환 문제입니다.
핵심은 A진법 → 10진법 → B진법 순서로 변환하는 것입니다.

정리하면:

  • A진법 수는 value * A + digit 방식으로 10진수 변환
  • 10진수는 % B, /= B 방식으로 B진법 변환
  • 나머지는 역순으로 쌓이므로 뒤집어서 출력

진법 변환 기본기를 연습하기 좋은 문제였고,
입력이 자릿수 배열 형태라는 점만 주의하면 쉽게 풀 수 있습니다.

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 2628 종이자르기 JAVA 풀이 (구현, 정렬, 시간복잡도)  (0) 2026.04.13
백준 10431 줄세우기 JAVA 풀이 (구현, 정렬, 시간복잡도)  (0) 2026.04.12
백준 15688 수 정렬하기 5 JAVA 풀이 (정렬, 시간복잡도)  (0) 2026.04.09
백준 13301 타일 장식물 JAVA 풀이 (피보나치, DP)  (0) 2026.04.08
백준 1769 3의 배수 JAVA 풀이 (문자열, 구현, 수학)  (0) 2026.04.07
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 2628 종이자르기 JAVA 풀이 (구현, 정렬, 시간복잡도)
  • 백준 10431 줄세우기 JAVA 풀이 (구현, 정렬, 시간복잡도)
  • 백준 15688 수 정렬하기 5 JAVA 풀이 (정렬, 시간복잡도)
  • 백준 13301 타일 장식물 JAVA 풀이 (피보나치, DP)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN N
      • 코테(Solved.ac + Programmers) N
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    완전탐색
    정처기
    시뮬레이션
    Level2
    브루트포스
    level0
    정보처리기사 실기 기출문제
    solved.ac
    백엔드개발자
    알고리즘
    수학
    정처기실기
    level1
    피보나치
    백준
    java
    자료구조
    기출문제
    정보처리기사
    문자열
    배열
    구현
    springboot
    정렬
    코딩테스트
    자바
    dp
    정처기오답노트
    실기
    프로그래머스
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
[백준] 11576번 : Base Conversion (JAVA)
상단으로

티스토리툴바