반응형
프로그래머스
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
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
프로그래머스 스킬트리 (C#) (0) | 2025.01.25 |
---|---|
N개의 최소공배수 (C#) (3) | 2025.01.24 |
프로그래머스 구명보트(C++) (1) | 2025.01.21 |
프로그래머스 괄호 회전하기 (C++) (0) | 2025.01.18 |
프로그래머스 2개 이하로 다른 비트 (C++) (1) | 2025.01.17 |