본문 바로가기
Baekjoon/[Code.plus] 알고리즘 기초 1/2

[BOJ/백준] 11005 진법 변환 2

by 해적거북 2021. 7. 29.
728x90

● [문제번호 11005] 진법 변환 2

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

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

 

● 알아야 할 것

: 진법을 변환하는 방법

: 재귀 함수

: 알파벳 대문자 출력을 위한 ASCII 코드

 

● 풀이 과정

: 문제를 계속 풀다보니 진법 변환은 재귀함수로 표현하는 것이 간결하고 이해하기 쉽다.

 

: base case 확인 → 재귀 → 출력 순서로 재귀함수를 구현한다.

또한 나머지 연산을 했을 때 10진법을 넘어가는 숫자를 위해 확인 작업이 필요하다.

 

● 주의 할 것

: 나머지 연산을 했을 때 10진법을 넘어가는 숫자는 ASCII 코드로 출력하면 된다.

 

● 참고 할 것

: 진수 변환에 대한 이해

https://m.blog.naver.com/icbanq/221727893563

 

● 풀이 코드

#include <bits/stdc++.h>

using namespace std;

int N, B;

// 진법 변환은 재귀함수로 호출하면 간결하게 구현 가능
void change(int n)
{
    // 재귀 함수의 base case
    if(n == 0)
        return ;
    
    // 재귀 후 출력
    change(n / B);
    
    // 10진법을 넘어가는 숫자는 알파벳 대문자로 표현
    if(n % B < 10)
        cout << n % B;
    else 
        cout << (char)(n % B - 10 + 'A');
}


int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    // 10진법 수 와 변환할 진법 입력
    cin >> N >> B;
    
    // 진법 변환
    change(N);
    
    return 0;
}

 

 

● [백준] - [알고리즘 기초 1/2] - [303 - 수학 1 (참고)] 문제집

번호 문제 번호 문제 이름 풀이 링크
1 11005 진법 변환 2 https://pirateturtle.tistory.com/195
2 2745 진법 변환 https://pirateturtle.tistory.com/196
3 11576 Base Conversion https://pirateturtle.tistory.com/197
4 11653 소인수분해 https://pirateturtle.tistory.com/198

 

728x90

댓글