-
[프로그래머스] 다음 가장 큰 수문제 풀이 2020. 5. 28. 23:13
풀이)
뭔가 공식이 있을까 싶어 여러 방법을 다해보다가 결국 n보다 큰 수들을 2진수로 변환해 탐색해나갔다.
n+1부터 2진수로 바꾼 뒤 비트1의 개수를 센다 -> 비트1의 개수가 n과 같다면 stop하고 수를 반환.
코드)
#include <string> #include <vector> using namespace std; int change(int val){ //숫자를 이진수로 바꿔서 bit 1의 개수를 return int cnt =0; while(val>0){ if(val%2 == 1){ cnt++; } val /= 2; } return cnt; } int solution(int n) { int i = n+1; n = change(n); while(change(i) != n){ i++; } return i; }
+ 다른 분의 코드를 보다가 bitset STL을 사용하는 방법을 봤다.
bitset의 사용법은 다른 포스팅에 적어두었다.
'문제 풀이' 카테고리의 다른 글
[프로그래머스] 방문길이 (0) 2020.05.30 [프로그래머스] 외벽 점검 (0) 2020.05.29 [프로그래머스] 기둥과 보 (0) 2020.05.28 [프로그래머스] 폰켓몬 (0) 2020.05.28 [프로그래머스] 튜플 (0) 2020.05.27