코딩/백준 문제 (브론즈)

[백준/11005/C언어] 진법 변한 2 _ 풀이

룻밤 2023. 8. 9. 17:25

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

 

11005번: 진법 변환 2

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

www.acmicpc.net


풀이

#include <stdio.h>
int main() {
	int n, b;	// 10진법 n에서 바꿀 b진법
	int total[30];		// total = b진법의 n (최대 2^30 = 10억 까지 가능)
	int i = 0, cnt = 0;		// i는 total 인덱스, cnt는 배열의 끝항을 위해

	scanf("%lld %d", &n, &b);
	while (n) {		// n이 0이 될때까지 반복
		total[i] = (int)n % b;		// total에는 n%b의 값만 저장
		n = (int)n / b;				// n은 n/b의 값으로 변경
		i++;		
		cnt++;
	}

	// cnt를 통해 total배열을 역으로 출력
	for (int j = cnt - 1; j >= 0; j--) {
		if (total[j] >= 10)			// 나머지값이 10 이상일때는 
			printf("%c", total[j] + 55);	// 문자로 출력
		else						// 이하일때
			printf("%d", total[j]);		// 숫자 출력
	}

	return 0;
}