*문제 출처는 프로그래머스에 있습니다.
문제 제목: 다음 큰 숫자 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12911
문제 설명
나의 풀이
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
int count_one = 0;
int k = n + 1;
int i = n;
while (i > 0) {
if (i % 2 == 1) count_one++;
i /= 2;
}
while (true) {
int count_one1 = 0;
int j = k;
while (j > 0) {
if (j % 2 == 1) count_one1++;
j /= 2;
}
if (count_one == count_one1) {
answer = k;
break;
}
++k;
}
return answer;
}
※ 알아야 할 것
순서를 신경쓰지 말고 1의 개수만 비교해서 같으면 그 값을 반환하면 바로 결과가 나온다.
10진수에서 2진수로 만들때 2로 나눠서 나머지가 0이면 0이고 1이면 1이다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 짝지어 제거하기 / C++ (0) | 2024.02.15 |
---|---|
Programmers / 피보나치 수 / C++ (0) | 2024.02.14 |
Programmers / 특이한 정렬 / C++ (0) | 2024.02.08 |
Programmers / 올바른 괄호 / C++ (0) | 2024.02.07 |
Programmers / 이진 변환 반복하기 / C++ (0) | 2024.02.07 |