728x90
programmers.co.kr/learn/courses/30/lessons/12911
단순히 이진수로 변환해서 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
'PS' 카테고리의 다른 글
프로그래머스 - 올바른 괄호 (0) | 2020.12.08 |
---|---|
프로그래머스 - 단체사진 찍기 (0) | 2020.12.07 |
프로그래머스 - 기능 개발 (0) | 2020.12.07 |
프로그래머스 - 124 나라의 숫자 (0) | 2020.12.07 |
프로그래머스 - 피보나치 수 (0) | 2020.12.07 |