*다음 큰 숫자 (while문) 자연수 n, 다음 큰 숫자 구하기. 2진수로 변환했을때 1의 갯수가 같은 수중에 최솟값. #include <iostream> #include <vector> using namespace std; int resultCount(int n) { vector v; while(n > 0) { v.push_back(n % 2); n /= 2; } int count = 0; vector::iterator iter; for(iter = v.begin(); iter != v.end(); ++iter) { if(*iter == 1) count++; } return count; } int solution(int n) { int answer = 0; int i = 0; int k = 0; i = resultCount(n); while(true) { n++; k = resultCount(n); if(i == k) break; } return n; } 다른 방식 #include <iostream> using namespace std; int resultCount(int n) { int count = 0; while(n > 0) { count += n % 2; n /= 2; } return count; } int solution(int n) { int answer = 0; int i = 0; int k = 0; i = resultCount(n); while(true) { n++; k = resultCount(n); if(i == k) break; } return n; } | cs |
'::public > 코딩테스트 풀이' 카테고리의 다른 글
직사각형 별 찍기 (0) | 2019.09.05 |
---|---|
약수 더하기 (0) | 2019.09.05 |
문자열 중에 같은 문자 확인 (0) | 2019.09.05 |
점프 슈트 (0) | 2019.09.05 |
프로그래머스 문제 풀이 (0) | 2019.08.12 |