상세 컨텐츠

본문 제목

< 백준 BaekJoon : 11005번 진법변환 2> C++

C++/Baekjoon

by J2on 2023. 8. 1. 22:31

본문

문제

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

 

11005번: 진법 변환 2

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

www.acmicpc.net

 

풀이

이런 문제를 처음 풀어본다면 조금은 까다롭게 느낄 수 있을것 같습니다.

 

이런 진법변환 문제는 ASCII 코드를 사용하면 쉽게 해결할 수 있습니다.

 

C++의 경우 int -> char 변환이 ASCII 코드를 통해 이루어집니다. (EX- char(48) == '0') 

 

떄문에 이러한 특성을 이용하면 좋겠죠. ASCII 코드는 검색하면 많이 나와요.

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main(){
  int N;
  int B;
  
  cin >> N >> B;

  int square = 0;
  int div = N / pow(B,square);
  
  while( int(N / pow(B,square+1)) > 0){
    square++;
    div = N / pow(B,square);
  }


  for(int i=square; i>=0; i--){
    div = N / pow(B,i);
    N -= div * pow(B,i);
    if(div >= 10){
      div +=55;
    }
    else{
      div += 48;
    }
    cout << char(div);
    
  }
}

 

 

 

https://github.com/J2on/BaekjoonOnlineJudge/blob/master/Code/Bronze/11005.cpp

 

관련글 더보기

댓글 영역