프로그래머스(Programmers)
Level 2 > 다음 큰 숫자
cepiloth
2018. 9. 14. 19:17
반응형
https://programmers.co.kr/learn/courses/30/lessons/12911
1. 문제
입력 받은 숫자를 이진수로 변환하여 갖고 있는 1의 개수와 다음 숫자를 이 진수로 변환 했을 때 1의 개수가 같은 숫자를 찾는 문제
현재 숫자 - 78(1001110) == 1 의 개수 4 개
다음 큰 숫자 - 83(1010011) == 1 의 개수 4개
2. 알고리즘
키워드 - 구현
3. 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <string> #include <vector> using namespace std; int solution(int n) { int count = __builtin_popcount(n); // 현재 정수의 비트 카운트를 계산 한다. while(true) { // 반복문으로 n 의 값을 증가하며 2진수로 변환 했을 때 // 비트 카운트가 같은 값을 찾는다. ++n; int cand = __builtin_popcount(n); if(count == cand) { break; } } return n; } | cs |
반응형