https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 풀이
저번에 자바스크립트에서 진법 변환하는 방법을 올렸었는데, 그거에 대한 응용 ver 라고 생각이 드다
이 문제에서는 이진변환을 하는데, 이진 변환에는 총 두 단계가 있다
- x의 모든 0을 제거합니다.
- x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.
이 두 단계를 마치면 이진변환 한 번이 완료되는 것이다
1번의 경우에는 split을 이용했다. split 함수 안에 0을 넣어주고 join을 해주면, 0을 제외한 모든 문자열들이 반환될 것이다!
(split(0)-> 0을 구분자로 구분되는 문자열들이 배열에 담긴다->join('')->지금 배열로 되어있는 것들을 공백없이 문자열로 합쳐준다 => 결과적으로 0을 제외한 문자열들이 반환된다
그 다음엔 적절하게 answer 배열에서 수를 늘려주고, toString(2)를 통해 0을 제외하고 반환된 문자열의 길이를 이진법으로 표현하고 이진변환 카운트를 하나 늘려주면 끝~
2) 최종 소스코드
function solution(s) {
const answer=[0,0];
let tmp=0;
while(s!==1){
tmp=s.split(0).join('');
answer[1]+=s.length-tmp.length;
s=tmp.length.toString(2);
answer[0]++;
}
return answer;
}
728x90
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JavaScript] H-Index (0) | 2022.11.13 |
---|---|
[프로그래머스/JavaScript] 다음 큰 숫자 (0) | 2022.11.08 |
[프로그래머스/JavaScript] 피보나치 수 (0) | 2022.11.04 |
[프로그래머스/JavaScript] 3진법 뒤집기 (0) | 2022.11.03 |
[프로그래머스/JavaScript] JadenCase 문자열 만들기 (0) | 2022.11.03 |