[프로그래머스] 다음 큰 숫자
Programmers - [연습문제] 다음 큰 숫자
사용 언어 - C++
소요 시간 - 15분
정답 여부 - O
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12911
문제 요약
- 자연수 n이 주어집니다.
- n의 다음 큰 숫자는 n보다 큰 자연수 중에서 2진수로 변환했을 때 1의 개수가 n과 같은 수 중 가장 작은 수입니다.
- n의 다음 큰 숫자를 반환합니다.
최종 코드
#include <string>
#include <vector>
using namespace std;
int CountOne(int n)
{
int count = 0;
while(n > 0)
{
if(n % 2 == 1)
count++;
n /= 2;
}
return count;
}
int solution(int n) {
int answer = n + 1;
int bits = CountOne(n);
while(true)
{
if(CountOne(answer) == bits)
return answer;
answer++;
}
}
트러블 슈팅
- 2진수에서 1의 개수를 세는 함수를 따로 만들어서 반복문에서 활용하니 코드가 더 깔끔해졌다.
- 처음에는 string 변환을 사용하려 했으나, 반복문과 나머지 연산으로 더 빠르게 구현할 수 있었다.
문제 풀이 후 소감
- 2단계임에도 정답률이 왜 높은 문제인지 알 수 있었다. 문제 자체는 크게 어렵지 않은 것 같다.
오늘의 기록
- 꾸준히 한 문제씩 풀기
- 하는 일도 잘 풀리고, 아프지 않고 행복했으면 좋겠다