프로그래머스_C#/Level_2

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

최애뎡 2021. 11. 1. 00:05
728x90
반응형

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

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

using System;
using System.Linq;

class Solution 
{
    public int solution(int n) 
    {
        int answer = n;
        int _count = Count(Convert.ToString(n, 2));

        while (true)
        {
            if (_count == Count(Convert.ToString(++answer, 2)))
                break;            
        }
        
        return answer;
    }
    
    int Count(string str)
    {
        int count = 0;
        for (int i = -1; ++i < str.Length;)
            if (str[i] == '1')
                ++count;
        
        return count;
    }
    
    //.Where(x => x == '1').Count()
}

사실 편하게 편하게 하려다 보니 

Convert.ToString(++answer, 2)).Where(x => x == '1').Count()

뭐 대충 이런 식으로 구하려 했는데

Where을 사용해 보니 

효율성에서 난리가 나버렸..

음 생각보다 속도 차이가 심하구나..

반응형