::public/코딩테스트 풀이
다음 큰 숫자
해맑은욱
2019. 9. 5. 16:25
*다음 큰 숫자 (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 |