공부기록
다음 큰 숫자 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/12911
코드
import java.util.*;
class Solution {
int min_val = 2000000000;
int n_val = 0;
int count_one(int n){
int cursor = 1;
int one_c = 0;
while(cursor <= n){
if((cursor&n) == cursor)
one_c++;
cursor*=2;
}
return one_c;
}
public int solution(int n) {
int answer = 0;
int one_c = count_one(n);
while(true){
n++;
if(one_c == count_one(n)){
answer = n;
break;
}
}
return answer;
}
}
피드백
- 난 푸는데 실패
- 비트 수가 20개 임을 감안하여 O(20C10)일거 같아서 했는데 효율성에서 나가리... 더 좋은 방법이 있다.
- 근데 생각이 안남 ㅎ
- 답안은 n부터 1씩 증가시켜 조건에 맞는 수를 찾는 것이다.
- 너무나 간단하고 효율적이었다.
- 완탐이 dfs만 있는 것이 아닌, iteration 형식도 있다는 것을 항상 생각해자.