BOJ[2998] - 8진수 by JavaScript
8진수
문제
언어
- JavaScript
순서도
- 2 진수의 길이가 3 으로 나누어 떨어질 때 까지 수의 앞에 0 을 붙이기
- 3 자리씩 그룹으로 나눠서 8 진수로 바꾸기
문제 풀이 step 1
- 2 진법의 수를 8 진법의 수로 변환하는 문제입니다.
- 문제에서 설명한 방법 그대로 로직을 작성하면 됩니다.
- 우선, 주어진 2 진수의 길이가 3 으로 나누어 떨어질 때 까지 수의 앞에 0 을 붙입니다.
- 그 다음, 3 자리씩 그룹을 나누고, 문제에서 주어진 표를 참고해 8 진수로 변환합니다.
- 추가 설명은 주석으로 작성하겠습니다.
후기
- 2 진수를 8 진수로 바꾸는 방법을 기억하고자 포스트하게 되었습니다.
소스 코드
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
// 문제에서 주어진 표를 객체 형식으로 변환
const dictionary = {
0: "0",
1: "1",
10: "2",
11: "3",
100: "4",
101: "5",
110: "6",
111: "7",
};
const solution = (input) => {
const num = input[0].split("");
// 2 진수의 길이가 3 으로 나누어 떨어질 때 까지 수의 앞에 0 을 붙이기
while (true) {
if (num.length % 3 === 0) break;
num.unshift("0");
}
// 위에서 만든 표를 이용해서 8 진수로 변환하기
let res = "";
for (let i = 0; i < num.length; i += 3) {
const key = num[i] + num[i + 1] + num[i + 2];
res += dictionary[Number(key)];
}
return res;
};
console.log(solution(input));