-
프로그래머스 Lv2 다음 큰 숫Computer Science/프로그래머스 2023. 10. 6. 11:36더보기
이 문제는 n을 늘려가면서 2진수 일 때 1 개수가 같은지 확인하면 된다.
가장 작은 수를 찾으면 되기 때문에 조건 1, 2가 맞는지 확인하고 바로 리턴하면 된다.
2진수의 개수가 같은지 확인하는 부분이 어려웠는데
bitmasking을 통해서 풀었다.
n의 최대값이 1'000'000이므로 24비트까지 검사를 했다.
int bitmask(int n) { int result = 0; for(int i = 0; i <= 24; ++i) { if(((n >>i) & 1) == 1) ++result; } return result; }
더보기위와 같이 bitmasking 코드를 구현하면된다.
#include <string> #include <vector> using namespace std; int bitmask(int n) { int result = 0; for(int i = 0; i <= 24; ++i) { if(((n >>i) & 1) == 1) ++result; } return result; } int solution(int n) { int answer = 0; int result = bitmask(n); while(1) { ++n; if(result == bitmask(n)) { return n; } } return answer; }
'Computer Science > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 가장 큰 정사각형 찾기 (0) 2023.10.06 프로그래머스 Lv2 올바른 괄호 (1) 2023.10.06 프로그래머스 Lv2 땅따먹기 (0) 2023.10.06 프로그래머스 Lv2 멀리 뛰기 (0) 2023.10.06 프로그래머스 Lv2 숫자 블록(소수) (0) 2023.10.05