코딩공부/프로그래머스

[프로그래머스]Lv.2 다음 큰 숫자 C#

usingsystem 2023. 8. 2. 16:28
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소스코드1(시간복잡도 오류)

using System;
using System.Linq;
class Solution
{
    public int solution(int n)
    {
            int nBinary = Convert.ToString(n, 2).Where(s=>s == '1').Count();
            while (true)
            {
                int nextBinary = Convert.ToString(++n, 2).Where(s => s == '1').Count();
                if (nBinary == nextBinary)
                    return n;
            }
        }
    }
}

소스코드2

using System;
class Solution
{
    public int solution(int n)
    {
        string nBinary = Convert.ToString(n, 2);
        int nBinaryCount = 0;
        for (int i = 0; i < nBinary.Length; i++)
            if (nBinary[i] == '1')
                nBinaryCount++;

        while (true)
        {
            string nextBinary = Convert.ToString(++n, 2);
            int nextBinaryCount = 0;
            for (int i = 0; i < nextBinary.Length; i++)
                if (nextBinary[i] == '1')
                    nextBinaryCount++;

            if (nBinaryCount == nextBinaryCount)
                return n;
        }
    }
}
728x90