-
21. 다음 큰 숫자코딩 테스트/Level 2 2020. 8. 4. 14:56반응형
https://programmers.co.kr/learn/courses/30/lessons/12911
연습문제 4563명 완료
Python
def solution(n): n_count = bin(n).count('1') n += 1 while bin(n).count('1') != n_count: n += 1 return n
테스트 1 〉 통과 (0.04ms, 10.7MB) 테스트 2 〉 통과 (0.04ms, 10.7MB) 테스트 3 〉 통과 (0.04ms, 10.7MB) 테스트 4 〉 통과 (0.03ms, 10.7MB) 테스트 5 〉 통과 (0.04ms, 10.7MB) 테스트 6 〉 통과 (0.03ms, 10.7MB)
bin함수와 count 함수를 안다면 어렵지 않을 것 같습니다.
bin 함수는 숫자를 2진수 표기(문자열)로 바꿔줍니다.
count 함수는 list 등에서 사용할 수 있는 것처럼 문자열에서도 사용할 수 있습니다.대부분의 언어에서 문자열은 char array 비스무리하게 처리해 주죠?https://wikidocs.net/14#x-count저의 코드는 아닙니다만, 재귀를 사용하면 한 줄로 줄일 수도 있습니다.
키워드 인수를 이용해서 초기값을 전달하는 쌘쓰
https://dojang.io/mod/page/view.php?id=2346def solution(n, n_count=0): return n if (bin(n).count('1') == n_count) else \ solution(n+1, bin(n).count('1') if (n_count is 0) else n_count)
테스트 1 〉 통과 (0.05ms, 10.7MB) 테스트 2 〉 통과 (0.04ms, 10.7MB) 테스트 3 〉 통과 (0.06ms, 10.8MB) 테스트 4 〉 통과 (0.04ms, 10.7MB) 테스트 5 〉 통과 (0.04ms, 10.6MB) 테스트 6 〉 통과 (0.04ms, 10.7MB)
JS
function solution(n) { num = n.toString(2).split('').reduce((a, b) => a = parseInt(a) + parseInt(b)) do { n++ } while (num == n.toString(2).split('').reduce((a, b) => a = parseInt(a) + parseInt(b))) return n; }
C#
using System; using System.Linq; internal class Solution { public int solution(int n) { int temp = Convert.ToString(n, 2).Where(a => a == '1').Count(); for (n = n + 1; temp != Convert.ToString(n, 2).Where(a => a == '1').Count(); n ++){} return n; } }
Java
class Solution { public int solution(int n) { int num = Integer.bitCount(n); while (num != Integer.bitCount(++n)) {} return n; } }
반응형