PS

프로그래머스 - 다음 큰 숫자

728x90

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

 

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

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

programmers.co.kr

 

단순히 이진수로 변환해서 1의 갯수를 비교하고,

같으면 나가게 하고 아니면 n 을 하나씩 늘리면서 비교하면 된다.

답이 항상 n 보다 큰 자연수이므로 초기의 answer 를 n + 1 로 잡고 시작한다.

 

- c++

 

#include <string>
 
using namespace std;
 
bool number_of_one(int num1, int num2) {
    int cnt1 = 0, cnt2 = 0;
    while(num1 != 0) {
        int temp = num1 % 2;
        if (temp == 1) cnt1++;
        num1 /= 2;
    }
    
    while(num2 != 0) {
        int temp = num2 % 2;
        if (temp == 1) cnt2++;
        num2 /= 2;
    }
    
    if (cnt1 == cnt2) return true;
    else return false;
}
 
int solution(int n) {
    int answer = n + 1;
    
    while(1) {
        if (number_of_one(n, answer)) break;
        else answer++;
    }
    
    return answer;
}
cs

 

 

 

728x90