[알고리즘][구름]진법 변환

Jaino Song·2024년 6월 15일

알고리즘

목록 보기
6/7

문제

10진법으로 표현된 정수 N을 특정한 r진법으로 표현하는 것은 매우 쉽다. 하지만 정수 N 과 N을 어떤 진법으로 변환한 결과 T를 알고 있을 때 변환에 사용된 진법 r을 알아내는 것은 어려울 수 있다.
정수 N과 N을 어떤 진법으로 변환한 결과 T가 주어질 때, r을 구하여 출력하시오

입력

첫째 줄에 정수 V과 을 '진법으로 변환한 결과 T가 공백을 두고 주어진다.
• 1 ≤ N ≤ 2 X 10^9
• T는 알파벳 대문자 A ~ F를 포함하고 있을 수 있으며, 각각 10부터 15까지의 정수에 일대일로 대응된다.
• 2 ≤ r ≤ 16
• 항상 진법 변환이 가능한 입력만 주어진다.

출력

첫째 줄에 N을 T로 변환하는데 사용된 r을 출력한다

예시 1

입력
123 123
출력
6

예시 2

입력
4576 3490
출력
11

예시 3

입력
1234567890 1001001100101100000001011010010
출력
2

예시 4

입력
7 7
출력
8

풀이

// Run by Node.js
// 10진법으로 표현된 정수 N
// Nr = T
// r은 몇 진법인지 찾으시오
const readline = require('readline');

(async () => {
	let rl = readline.createInterface({ input: process.stdin });
	
	let input = [];
	for await (const line of rl) {
		input.push(line.trim())
		rl.close();
	}
	
	// N과 T에 각각 입력으로 들어온 정수와 진법 변환의 결과를 넣어준다
	let [N, T] = input[0].split(' ');
	
	// 2진법에서 16진법까지 반복
	for (let i = 2; i <= 16; i++) {
		// toString은 숫자에만 쓸 수 있기에 숫자로 바꿔주고, toString으로 
		// 문자열이 된 N을 대문자로 통일해줘서 결과와 비교해준다.
		if (Number(N).toString(i).toUpperCase() === T.toUpperCase()) {
			console.log(i);
			break;
		}

	}
})();
profile
하루하루 목표를 향해 나아가야지

0개의 댓글