개발👩💻/알고리즘
백준 js 1212: 8진수 2진수
gigibean
2021. 5. 8. 21:43
728x90
문제
8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
출력
첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
예제 입력 1
314
예제 출력 1
11001100
풀이
이 문제가 정답 비율이 낮은 이유,, 0인것 같다
그냥 수가 0인경우를 제외하고는 반드시 1로 시작해야한다고만 명시되어 있어서
이 부분만 처리했는데, 찾아보니 000인 경우도 0으로 변환해주어야 한다.
(맞는말이긴한데)
스위치문을 사용해서 0-9까지 변환 케이스 문을 만드는 방법이 있고
자릿수를 빼주면서 0을 만드는 방법이 있는데
케이스문이 더 빠른 것 같다.
전체코드
const fs = require("fs");
const input = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString().trim()
: `0`
).split("");
let ans = [];
input.map((x, i) => {
let tmp = parseInt(x);
let result = new Array(3).fill(0);
while (tmp) {
if (tmp >= 4) {
tmp -= 4;
result[0] = 1;
} else if (tmp >= 2 && tmp < 4) {
tmp -= 2;
result[1] = 1;
} else if (tmp === 1) {
tmp -= 1;
result[2] = 1;
}
}
if (i === 0) {
while (result[0] === 0) result.shift();
if (result[0] !== 1) {
ans += "0";
}
}
ans += result.join("");
});
console.log(ans);
반응형