공부기록

다음 큰 숫자 본문

코테/프로그래머스

다음 큰 숫자

코타쿠 2021. 8. 30. 19:57

문제

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 형식도 있다는 것을 항상 생각해자.

'코테 > 프로그래머스' 카테고리의 다른 글

여행경로  (0) 2021.09.04
이중우선순위큐  (0) 2021.09.03
큰 수 만들기  (0) 2021.08.29
조이스틱  (0) 2021.08.26
가장 큰 수  (0) 2021.08.21