https://www.acmicpc.net/problem/1212
문제
8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
출력
첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
예제 입출력
입력 | 출력 |
314 | 11001100 |
풀이[node.js]
2진수 8진수와 마찬가지 방식으로 풀이하면 된다.
이번 문제는 inputs을 한개씩 잘라야 하므로 inputs.length-1을 기준으로 slice해주면 된다.
하지만, 이렇게 했을 때에, 314 중 1인 경우에, 001로 2진수 값이 나와야하는데, 1만 입력되게 된다.
이러한 오류를 제거하기 위해서, inputs의 길이가 1보다 큰 경우에는 answer에 값을 추가해줄 때 padStart를 사용하여 세자리수를 0으로 채워서 대입하게 했다. (padStart 정리 좌표는 아래에)
https://leylaoriduck.tistory.com/454?category=878030
무슨 말이냐면, 2진수로 변환된 값이 1로 나오게 되면, padStart를 사용하여 만약 나온 값이 세자리수가 아닐경우, 앞에서부터 '0'을 채워 세자리로 만들어주는 것이다. 그래서 결국 001이 answer로 들어가게 된다.
하지만, 만약 inputs의 길이가 한개라면, 여기선 3만 남은 경우에는 값이 11이 나오게 되는데, 이때는 세자리수를 맞출 필요가 없으므로 그냥 answer에 2진수로 변환한 값인 11만 넣어주면 된다.
var fs = require('fs');
var inputs = fs.readFileSync('/dev/stdin').toString().trim();
var answer = '';
while(inputs.length !== 0){
if(inputs.length>1){
answer = parseInt(inputs.slice(inputs.length-1), 8).toString(2).padStart(3,'0') + answer;
}else{
answer = parseInt(inputs.slice(inputs.length-1), 8).toString(2) + answer;
}
inputs = inputs.slice(0, inputs.length-1);
}
console.log(answer);
'알고리즘 스터디 > 백준 알고리즘 기초 1' 카테고리의 다른 글
[백준 1676번 팩토리얼 0의 개수 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.09 |
---|---|
[백준 17103번 골드바흐 파티션 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.09 |
[백준 1373번 2진수 8진수 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.09 |
[백준 17087번 숨바꼭질 6 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.08 |
[백준 11576번 Base Conversion - node.js] [알고리즘 기초 1/2] (0) | 2021.08.07 |
댓글