코딩테스트 공부
[프로그래머스] 이진 변환 반복하기 - 자바스크립트
codevil
2022. 4. 15. 21:42
https://programmers.co.kr/learn/courses/30/lessons/70129
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
문제가 어렵다기보다는.. 문제를 좀 잘읽자. 라고 반성하기 위해서 남기는 글. Boundary condition을 고려할 것도 없이 while이 1이 될때, stop만 넣으면 되는 문제다. 코딩 테스트 최근에는, 너무 문제를 잘못읽어서 시간을 보내는 경향이 있는거같다. 반성하자.
function solution(s) {
let answer = [s, 0, 0]
while(answer[0]!=1){
process(answer)
answer[1] = answer[1]+1
}
return [...answer.slice(1)]
}
function process(answer){
//0제거
const regex0 = /(0)/g
const regex1 = /(1)/g
let answer0 = answer[0].match(regex0)
let answer1 = answer[0].match(regex1)
if(answer0){
answer[2] = answer[2] + answer[0].match(regex0).length
answer[0] = answer[0].replace(regex0, '')
}
//10진법 전환
answer[0] = answer1.length;
//2진법으로 변쉰
answer[0] = answer[0].toString('2')
return answer
}