<문제>
<접근 방식>
1) n을 2진법으로 바꿨을 때 1이 몇개 있는지 카운팅 한다.
2) n 보다 큰 숫자를 하나씩 2진법으로 변환하면서 1을 카운팅해서 '1)'의 1 개수와 동일하면 가장 작은 자연수가 된다.
<코드>
class Solution {
public int countOne(int a) {
int countOne = 0;
while(a != 0) {
if(a % 2 == 1) {
++countOne;
}
a /= 2;
}
return countOne;
}
public int solution(int n) {
int answer = 0;
int oneCountForN = countOne(n);
for(int i = n + 1; i < 1000000; i++) {
if(countOne(i) == oneCountForN) {
answer = i;
break;
}
}
return answer;
}
}
반응형
'코딩 테스트 > 알고리즘(Java)' 카테고리의 다른 글
[프로그래머스/Lv.1] 최소직사각형 (0) | 2025.01.23 |
---|---|
[프로그래머스/Lv.2] 짝지어 제거하기 (1) | 2025.01.21 |
[프로그래머스/Lv.1] 삼총사 (1) | 2025.01.16 |
[프로그래머스/Lv.1] 3진법 뒤집기 (0) | 2025.01.16 |
[프로그래머스][Lv.1]문자열을 정수로 바꾸기 (0) | 2025.01.11 |