bitset 의 존재만 알고 자세히 다루진 못했는데 이 문제를 풀면서
bitset에대해 더 알게 되었다.
다른문제풀이를 보니 계속 2로 나누어서 1의 개수를 세는 문제풀이도 있었고 , biset 의 함수중에 count 라는 함수를 써서 엄청 짧게 푼 문제풀이도 있었다. 많이 알 수록 간단해 지는것 같다.
#include <string>
#include <bitset>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
bitset<20> bit(n);
string s1 = bit.to_string();
int ones=0;
for(int i=0;i<s1.length();i++){
if(s1.at(i)=='1')ones++;
}
while(true){
bitset<20> bit2(n+1);
n++;
string s2 = bit2.to_string();
int x=0;
for(int i=0;i<s2.length();i++){
if(s2.at(i)=='1')
x++;
}
if(x==ones){
answer=bit2.to_ulong();
break;
}
}
return answer;
}
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 문제풀이] 배달 문제풀이 (0) | 2021.09.06 |
---|---|
[프로그래머스 문제풀이] 더 맵게 문제풀이 (0) | 2021.06.25 |
[C++]2020 KAKAO BLIND RECRUITMENT 2번문제 (0) | 2021.03.28 |
[C++]2020 KAKAO BLIND RECRUITMENT 1번문제 (0) | 2021.03.25 |
프로그래머스 타겟 넘버 문제풀이 (0) | 2021.02.15 |