프로그래머스 C++

프로그래머스 다음 큰 숫자 C++

Srff5123 2024. 11. 5. 19:37
728x90

 

문제 풀이

자연수 n이 주어졌을 때, n의 다음 숫자는 n보다 큰 자연수이고,

2진수로 변환했을때 1의 갯수가 n과 같아야 하는 가장 작은 수를 리턴하는 문제

 

while문을 이용해 n의 2진수와 1의 갯수가 같을때 까지 반복을 하고,

bitset을 이용해 n을 이진수 변환후 count()를 이용해 1의 개수를 세어주어 변수 a에 받아주고

 

처음 값을 비교를 위해 bignumber = n + 1의 숫자도 위의 방법과 동일한 방식으로 계산하여 nextcount에 넣어준다.

그다음 while문의 조건을 통해 nextcount 개수와 a의 개수가 같아질때까지

bignumber를 ++을 해주며 위의 과정을 반복하면

 

n보다 크며, 이진수변환시 1의 개수가 같은가장 작은수를 찾을 수있다.

728x90