Bleeding edge

[프로그래머스] 이진 변환 반복하기 - 자바스크립트 본문

코딩테스트 공부

[프로그래머스] 이진 변환 반복하기 - 자바스크립트

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
}