https://programmers.co.kr/learn/courses/30/lessons/12911
코딩테스트 연습 - 다음 큰 숫자
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니
programmers.co.kr
따로 코멘트할 것 없이 그냥 코드만 봐도 이해가 될 것이다! 레벨 2 치고 나름 쉬운 문제인 것 같다.
소스코드
#include <string>
#include <vector>
using namespace std;
// 해당 수를 2진수로 바꿀 때 1의 갯수
int get1(int n) {
int count = 0;
while(n) {
if(n%2 == 1) count++;
n= n/2;
}
return count;
}
int solution(int n) {
//다음 수와 다음 수의 2진수 1의 갯수를 저장하는 변수 선언
int next = n;
int next1 = 0;
//n의 2진수의 1의 갯수를 저장
int n1 = get1(n);
//n 다음수부터 하나씩 체크
bool k = true;
while(k) {
next++;
next1 = get1(next);
if(next1 == n1) k = false;
}
return next;
}
'CodingTest Practice > Programmers' 카테고리의 다른 글
프로그래머스 : 전화번호 목록 (C++, Lv.2, 해시) (0) | 2022.05.20 |
---|---|
프로그래머스 : 완주하지 못한 선수 (C++, Lv.1, 해시) (0) | 2022.05.20 |
프로그래머스 : 124나라의 숫자 (C++, Lv.2, 연습문제) (0) | 2022.05.18 |
프로그래머스 : 완주하지 못한 선수(C++, Lv.1, 정렬 이용) (0) | 2022.05.18 |
프로그래머스 : 네트워크(C++, Lv.3, DFS) (0) | 2022.05.18 |