[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. 생각
-
일반적으로 진법 변환을 하는 방법으로 접근했습니다. 일반적인 방법은 피제수를 제수로 나눈 뒤의 나머지를 저장하는 방식이고 출력할 때는 반대로 출력해야합니다.
-
10 미만의 숫자는 단순히 출력하면되지만 10 이상의 숫자, 예를 들면 10 = A, 11 = B, … , 35 = Z의 경우에는 알파벳으로 출력이 되어야하기 때문에 이 부분을 처리해야합니다.
-
저는 ‘A’의 아스키코드값이 65를 이용하였습니다. 예를 들면, 10이 A가 되어야하는데 이 수는 10을 65로 만들어 저장합니다. 10에 55를 더하거나 10에서 10을 뺀 뒤 65를 더할 수 있습니다.
-
계산된 나머지들의 순서가 거꾸로 나와야하기 때문에 스택을 사용할 수 있지만 저는 문자열에 저장을 하고 문자열을 뒤집어 출력을 했습니다.
3. 소스코드 (C++)