[백준/JAVA]11005번 진법 변환 2

2025. 3. 19. 21:42·코딩테스트/백준

문제

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

10진수 수 N을 B진법으로 변환해서 출력하는 문제였다.

이 문제는 https://www.youtube.com/watch?v=lFoqd5aNYlc 이 강의를 참고해서 풀었다!

문제 풀이

1. 나머지 연산을 이용한 진법 변환

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
        StringBuilder result = new StringBuilder();
        
        int decimal = Integer.parseInt(st.nextToken()); //10진수
        int base = Integer.parseInt(st.nextToken()); //진법
        int remainder; //나머지
        
        while(decimal>0) { 
        	remainder=decimal%base;
        	if(remainder>=10) {
        		result.append((char)('A' + remainder - 10));
        	}else {
        		result.append(remainder);
        	}
        	decimal/=base;
        }
        
        System.out.println(result.reverse());
        
    }
}

이 코드에서 중요한 점은 나머지가 10 이상일 때, 이를 B진법에 맞게 문자로 변환하는 과정이다. 진법 변환에서는 10 이상의 숫자를 알파벳으로 표현해야 한다. 10부터 A를 의미한다. 이러한 변환을 위해 (char)('A' + remainder - 10)라는 표현을 사용했다. 

remainder = 10이면 'A' + (10 - 10) = 'A'

remainder = 11이면 'A' + (11 - 10) = 'B'

remainder = 15이면 'A' + (15 - 10) = 'F'

즉, 10 이상의 나머지를 알파벳으로 변환하는 것이 핵심 개념이다.

2. Integer.tostring() 활용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 decimal = Integer.parseInt(st.nextToken()); //10진수
        int base = Integer.parseInt(st.nextToken()); //진법

        System.out.println(Integer.toString(decimal, base).toUpperCase()); 
    }
}

tostring() 메서드를 통해 간단히 풀 수도 있다. 정수를 문자열로 변환하여 반환한다. 매개값이 2개라면 두 번째 매개변수로 진법을 지정하여 숫자를 해당 진법에 맞는 문자열로 변환한다.

Integer.toString(int i) : 기본적인 정수 값을 문자열로 변환한다.

Integer.toString(int i, int radix) : 두 번째 매개변수로 진법을 지정하여 숫자를 해당 진법에 맞는 문자열로 변환한다.

'코딩테스트 > 백준' 카테고리의 다른 글

[백준/JAVA]2903번 중앙 이동 알고리즘  (0) 2025.03.21
[백준/JAVA]2720번 세탁소 사장 동혁  (0) 2025.03.20
[백준/JAVA]2745번 진법 변환  (0) 2025.01.24
[백준/JAVA]2563번 색종이  (0) 2025.01.24
[백준/JAVA]10798번 세로읽기  (0) 2025.01.24
'코딩테스트/백준' 카테고리의 다른 글
  • [백준/JAVA]2903번 중앙 이동 알고리즘
  • [백준/JAVA]2720번 세탁소 사장 동혁
  • [백준/JAVA]2745번 진법 변환
  • [백준/JAVA]2563번 색종이
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

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

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[백준/JAVA]11005번 진법 변환 2
상단으로

티스토리툴바