[백준] 11005 진법 변환2(C++)

Sangho Ahn·2022년 3월 15일
0

코딩테스트

목록 보기
8/14

문제링크

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

문제분석

  • 10진법 수 N을 B진법 수로 변환
  • 10진법을 넘어가는 진법은 숫자로 표시할 수 없다 => 알파벳 대문자 사용
    A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

  • N과 B가 주어진다
  • N : 10억 이하의 자연수
  • B : 2<=B<=36

출력

  • 10진법 수 N을 B진법으로 출력

풀이

  • 아래와 같이 진법 변환 공식을 사용한다
  • 계산된 숫자들을 따로 배열에 담는다.
while(n>=b){
	answer[index++] = n%b;
    n = n/b;
}
answer[index] = n;
  • 출력 시 10이 넘어가면 대문자 알파벳으로 출력한다.
for(int i=index; i>=0; i--){
	if(answer[i]<10) cout<<answer[i];
	else cout<<(char)('A'+answer[i]-10);
}

전체 코드

#include <iostream>
using namespace std;

int main(void){
	int answer[50]={0};
	int n=0, b=0, index=0;
	cin>>n>>b;
	
	//진법 변환 
	while(n>=b){
		answer[index++] = n%b;
		n = n/b;
	}
	answer[index] = n;
	
	//출력 - 10이 넘어가면 대문자 알파벳으로 출력한다. 
	for(int i=index; i>=0; i--){
		if(answer[i]<10) cout<<answer[i];
		else cout<<(char)('A'+answer[i]-10);
	}
}
profile
Java 백엔드 개발자를 준비하는 취준생입니다 :)

0개의 댓글

관련 채용 정보