[BOJ][C++] 백준 11005번 진법변환 2

Updated:

11005번 진법변환 2

1. 문제 정보

백준 온라인 저지 [11005번 진법변환 2] 문제의 링크입니다.

문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, …, F: 15, …, Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

출력

첫째 줄에 10진법 수 N을 B진법으로 출력한다.

예제 입력1

60466175 36

예제 출력1

ZZZZZ

시간 / 메모리 제한

1초 / 256MB


2. 생각

  1. 일반적으로 진법 변환을 하는 방법으로 접근했습니다. 일반적인 방법은 피제수를 제수로 나눈 뒤의 나머지를 저장하는 방식이고 출력할 때는 반대로 출력해야합니다.

  2. 10 미만의 숫자는 단순히 출력하면되지만 10 이상의 숫자, 예를 들면 10 = A, 11 = B, … , 35 = Z의 경우에는 알파벳으로 출력이 되어야하기 때문에 이 부분을 처리해야합니다.

  3. 저는 ‘A’의 아스키코드값이 65를 이용하였습니다. 예를 들면, 10이 A가 되어야하는데 이 수는 10을 65로 만들어 저장합니다. 10에 55를 더하거나 10에서 10을 뺀 뒤 65를 더할 수 있습니다.

  4. 계산된 나머지들의 순서가 거꾸로 나와야하기 때문에 스택을 사용할 수 있지만 저는 문자열에 저장을 하고 문자열을 뒤집어 출력을 했습니다.


3. 소스코드 (C++)


터미널의 입출력 화면 예제1

11005_1

터미널의 입출력 화면 다른 예제

11005_2 11005_3