본문 바로가기

CS/알고리즘

[230325] 이진 변환 반복하기

반응형

 

 

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 

내 풀이

  1. “1”이 될 때까지 반복하므로, s가 “1”이라면 answer를 반환한다.
  2. “1”이 아니라면
    1. 변환하는 횟수를 더함. 따라서 answer[0] += 1.
    2. 그리고 s에서 0의 개수만큼 answer[1]에 더할 것이다. s를 0 단위로 쪼개고 그 길이에서 -1한 값이 s에서 0의 개수이므로, s.split(’0’).length - 1을 더한다.
    3. s에서 “0”을 모두 “”로 대체하여 0을 없애고, 그 길이만큼(.length) 이진수로 변환(=toString(2))한다.
    4. solution(s)를 반환하여 다시 반복한다.
let answer = [0, 0];

function solution(s) {
    if(s === "1"){
        return answer;
    }
    answer[0] += 1;
    answer[1] += s.split('0').length - 1
    s = s.replaceAll('0','').length.toString(2)
    return solution(s)
}

 

 

 

 

반응형

'CS > 알고리즘' 카테고리의 다른 글

[230326] 숫자의 표현  (0) 2023.03.26
[230325] 3진법 뒤집기: parseInt, toString  (0) 2023.03.26
[230325] 최솟값 만들기  (0) 2023.03.26
[230323] 둘만의 암호  (0) 2023.03.26
[230323] 최빈값 구하기  (0) 2023.03.26