반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12911
문제 풀이
비트, 구현에 관련된 문제이다.
n보다 크며 이진수로 나타냈을 때 1의 개수가 같은 수를 리턴하면 되므로
n+1부터 입력 최대범위인 100만까지 돌며 조건에 만족하는지 함수를 통해 구현한다.
이때 2^19 < 100만 < 2^20이므로 자릿수는 20까지만 표현해도 된다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
bool SameBinaryOne(int a, int b){
string binaryA, binaryB;
binaryA = bitset<20>(a).to_string();
binaryB = bitset<20>(b).to_string();
int cntA = 0, cntB = 0;
for(int i=0; i<binaryA.size(); i++){
if(binaryA[i] == '1') cntA++;
}
for(int i=0; i<binaryB.size(); i++){
if(binaryB[i] == '1') cntB++;
}
if(cntA == cntB) return true;
else return false;
}
int solution(int n) {
int answer = 0;
for(int i=n + 1; i<1000001; i++){
if(SameBinaryOne(n, i)){
answer = i;
break;
}
}
return answer;
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 신고 결과 받기 / C++ (0) | 2022.01.19 |
---|---|
프로그래머스 - 땅따먹기 / C++ (0) | 2021.11.21 |
프로그래머스 - 위클리 챌린지 10주차, 교점에 별 만들기 / C++ (0) | 2021.11.10 |
프로그래머스 - N개의 최소공배수 / C++ (0) | 2021.11.07 |
프로그래머스 Level 1 올클 후기 (0) | 2021.10.31 |