개발/뇌를 말랑하게하는 코테 연습

[프로그래머스 Lv2] 다음 큰 숫자

njsung 2022. 6. 14. 17:29
반응형

[구현 환경]

  • C++

[문제 설명]

  • 주어진 숫자 n을 2진수로 변환했을 때의 1의 갯수와 동일한 1의 갯수를 가진 자연수 answer를 return

[함수 원형]

int solution(int n)
{
	int answer;
	return answer;
}

[풀이]

int solution(int n) {
    auto NumberOfOne = [](int n) {
        int cnt = 0;
        while (n != 0)
        {
            if (n % 2 != 0) cnt++;
            n /= 2;
        }
        return cnt;
    };
   
    auto n1 = NumberOfOne(n);

    for (int i = n+1;; ++i) 
    {
        auto n2 = NumberOfOne(i);
        
        if(n1==n2) return i;
    }
}
  • 정수 n이 입력되었을 때 2진수로 변환한 뒤 1의 갯수를 세는 람다 함수 NumberOfOne 구현
  • n+1부터 loop를 돌며 1의 갯수가 동일한 값을 찾으면 return
반응형