-
[JS/프로그래머스] 다음 큰 숫자Coding Test/JavaScript 2023. 7. 9. 20:41
10진법의 수를 2진법으로 바꾸는데는 다양한 방법이 있다.
그 중 n진수를 -> m진수로 바꾸는 방법인 parseInt(num,n).toString(m) 를 사용하여 구현하였다.
function solution(n) { let answer = n + 1; function countOnes (n) { let answer = 0 parseInt(n, 10).toString(2).split('').forEach((x) => { if (x === '1') { answer++; } }); return answer; } while(countOnes(n) !== countOnes(answer)) { answer++; } return answer; }
하지만 효율성 테스트를 통과하지 못했다.
countOnes() 함수내의 너무 시간복잡도가 커서 그런것 같다.
2진수로 바꾼 후 1의 갯수를 찾는 로직을 다시 짜봐야 겠다.
function solution(n) { let answer = n + 1; function countOnes(num) { let count = 0; while (num !== 0) { if (num % 2 === 1) { count++; } num = Math.floor(num / 2); } return count; }; while (countOnes(answer) !== countOnes(n)) { answer++; } return answer; }
이렇게 하니 효율성 검사도 모두 통과했다.
반응형'Coding Test > JavaScript' 카테고리의 다른 글
[JS/프로그래머스] 영어 끝말잇기 (0) 2023.07.11 [JS/프로그래머스]짝지어 생각하기 (0) 2023.07.10 [JS/프로그래머스] 숫자의 표현 (0) 2023.07.08 [프로그래머스 FE 데브코스/TIL] 단일 연결 리스트 (0) 2023.06.15 [프로그래머스 FE 데브코스] 해시 문제 : 베스트 앨범 (0) 2023.06.08