💻STUDY/BOJ

[BOJ] 11005. 진법 변환 2 (C)

coldNoodlePigeon 2022. 2. 11.
  • 코딩 초보

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진법으로 출력한다.

 


#include <stdio.h>

main() {
	long long n; 
	int b,count=0;
	char s[36];
	char ans[40]; 

	for (int i = 0; i < 10; i++) s[i] = '0' + i;
	for (int i = 10; i < 36; i++) s[i] = 'A' - 10 + i; 
	scanf("%lld %d", &n, &b);

	for (int i = 0; n > 0; i++) {
		ans[i] = n % b;
		n /= b; 
		count++; 
	}

	for (int i = count-1; i>=0; i--) {
		printf("%c", s[ans[i]]); 
	}

}

0~9, A~Z 는 s 라는 char형 배열에 넣어 저장했다. 

 

n을 계속 b로 나누어 그 나머지를 ans배열에 저장하고, 거꾸로 인덱스로 접근하여 s 배열에 저장된 문자들을 출력하도록 했다. 

 

'💻STUDY > BOJ' 카테고리의 다른 글

[BOJ] 1966. 프린터 큐 (Python)  (0) 2022.02.13
[BOJ] 11650. 좌표 정렬하기 (Python)  (0) 2022.02.12
[BOJ] 1977. 완전제곱수 (C)  (0) 2022.02.10
[BOJ] 1920. 수 찾기 (Python)  (0) 2022.02.09
[BOJ] 2164. 카드2 (Python)  (0) 2022.02.08

댓글