알고리즘 문제/프로그래머스

프로그래머스 다음 큰 숫자 (C#)

우대비 2025. 1. 22. 16:55
반응형
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

N을 입력받을 때, N보다 크면서 비트로 변환 했을 때, 1의 수가 N과 같은 수 중에서 가장 작은 수를 찾아주세요.

 

 

풀이 방법

While문 안에서 ++N을 하며 비트로 변환해 줍니다. 

이후 1의 개수가 같은지 체크하고, 같다면 해당 수를 반환하는 방식으로 풀이합니다.

 

int CountOnes(int num)
{
    return Convert.ToString(num, 2).Split('1').Length - 1;
}

num을 2진수로 바꾼 후에 1의 개수를 반환하는 함수입니다

 

int targetCount = CountOnes(n);

입력받은 n의 1의 개수를 targetCount변수에 넣어줍니다.

 

 while (true)
{
    if (CountOnes(++n) == targetCount) // 다음 숫자의 1 개수 비교
        break;
}
return n;

반복문을 통해 1이 같은 수가 나오면 바로 while문을 종료하고 반환합니다.

 

정답 코드

using System;

class Solution 
{
    int CountOnes(int num)
    {
        return Convert.ToString(num, 2).Split('1').Length - 1;
    }
    
    public int solution(int n) 
    {
        int targetCount = CountOnes(n); // n의 1 개수
        while (true)
        {
            if (CountOnes(++n) == targetCount) // 다음 숫자의 1 개수 비교
                break;
        }
        return n;
    }
}
반응형
LIST