반응형
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
- “1”이 될 때까지 반복하므로, s가 “1”이라면 answer를 반환한다.
- “1”이 아니라면
- 변환하는 횟수를 더함. 따라서 answer[0] += 1.
- 그리고 s에서 0의 개수만큼 answer[1]에 더할 것이다. s를 0 단위로 쪼개고 그 길이에서 -1한 값이 s에서 0의 개수이므로, s.split(’0’).length - 1을 더한다.
- s에서 “0”을 모두 “”로 대체하여 0을 없애고, 그 길이만큼(.length) 이진수로 변환(=toString(2))한다.
- 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 |