16진수

문제

언어

  • JavaScript

순서도

  1. 16 진수의 각자리의 수를 10 진수 모양으로 변환
  2. 변환한 각 숫자에 그 자리 수에 맞는 16 의 제곱수 곱하기
  3. 곱한 모든 값들을 더하기

문제 풀이 step 1

  • 주어진 16 진수를 10 진수로 변환하는 문제입니다.
  • 예를 들어 16 진수 5C2 를 10 진수로 변환한다면
    • 5C2 는 (5 * 16 ^ 2) + (12 * 16 ^ 1) + (2 * 16 ^ 0) 로 계산하면 1474 가 나옵니다.
  • 위의 예제처럼 각 자릿수에 맞는 16 의 제곱수를 곱한 후 더해주면 10 진수로 변환됩니다.
  • 변환된 값을 출력하면 정답이 됩니다.
  • 추가 설명은 주석에 작성하겠습니다.

소스 코드

const input = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");

const changeToNum = (char) => {
	const code = char.charCodeAt(0);

	// A ~ F 를 10 ~ 15 로 변환
	if ("A".charCodeAt(0) <= code && code <= "F".charCodeAt(0))
		return 10 + code - "A".charCodeAt(0);

	// 0 ~ 9 는 Number 형으로만 변환
	return Number(char);
};

const solution = (input) => {
	let res = 0;
	let base = 1;

	for (let i = input[0].length - 1; i >= 0; i--) {
		const num = changeToNum(input[0][i]);

		// 각 자리의 수와 16 의 제곱수 곱하기
		res += num * base;
		base *= 16;
	}

	// 변환한 값 출력
	return res;
};

console.log(solution(input));