728x90
[Javascript] (프로그래머스 level 2) 이진 변환 반복하기
💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
내 풀이
function solution(s) {
// 이진변환 : 모든 0을 제거, x의 길이를 c라하면 c를 2진법으로 표현한 문자열 로 변경
// s가 1이 될때까지 이진변환하기, return {이진변환의 횟수, 제거된 0의 갯수}
const answer = {
count : 0,
popedZero : 0,
s : s,
}
while(true) {
binaryConversion(answer);
if (answer.s === '1') {
return [answer.count, answer.popedZero];
}
}
return
}
function binaryConversion(answer) {
let preLen = answer.s.length;
answer.s = answer.s.split('').filter((x) => x === '1').join('')
let proLen = answer.s.length;
answer.count += 1;
answer.popedZero += (preLen - proLen);
answer.s = answer.s.length.toString(2);
return;
}
- 문제를 계속 풀어보면서 obj를 사용하는게 엄청 익숙해졌다. 특히 함수로 넘길때 변수를 넘기고 리턴으로 받고 하는게 골치아파서 그냥 object로 던지고 알아서 받게 만드는게 좀 꿀이라고 느끼는 중이다.
다른 사람 풀이
function solution(s) {
var answer = [0,0];
while(s.length > 1) {
answer[0]++;
answer[1] += (s.match(/0/g)||[]).length;
s = s.replace(/0/g, '').length.toString(2);
}
return answer;
}
- 와 깔끔하네요. 없애는 0의 갯수는 원래 s의 0의 갯수랑 같으니까.. ! 굳이 빼기 할 필요도 없었네요!
- 짧은 코드는 함수로 안만드는게 훨씬 깔끔.. ㅋㅋ
'Coding Test > JavaScript' 카테고리의 다른 글
[Javascript] (프로그래머스 level 1) 약수의 개수와 덧셈 (0) | 2022.07.08 |
---|---|
[Javascript] (프로그래머스 level 1) 로또의 최고 순위와 최저 순위 (0) | 2022.07.06 |
[Javascript] (프로그래머스 level 2) 기능 개발 (0) | 2022.07.02 |
[Javascript] (프로그래머스 level 2) 숫자의 표현 (0) | 2022.07.02 |
[Javascript] (프로그래머스 level 2) n진수 게임 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 2) 다음 큰 숫자 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 2) 최댓값과 최솟값 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 2) JadenCase 문자열 만들기 (0) | 2022.07.01 |
댓글