1. 문제
프로그래머스 다음 큰 숫자
programmers.co.kr/learn/courses/30/lessons/12911
2. 설명
3. 접근
- 주어진 수를 2진수로 변환시 1의 개수를 구합니다.
- for문으로 주어진 큰 수 중에서 2진수 변환시 1의 개수를 구합니다.
- 주어진 수의 1의개수와 같으면 for문을 중단합니다.
- 정답을 리턴합니다.
4. 코드
class Solution {
public int solution(final int n) {
int temp = 0;
int currentCnt = 0;
int targetCnt = 0;
int target = n;
int current = 0;
targetCnt = decimalToBinary(target, targetCnt);
for (current = n + 1; currentCnt != targetCnt; current++) {
currentCnt = 0;
temp = current;
currentCnt = decimalToBinary(temp, currentCnt);
}
return current - 1;
}
public static int decimalToBinary(int current, int cnt) {
while (current > 0) {
if (current % 2 == 1) {
cnt++;
}
current = current / 2;
}
return cnt;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 위장(Java) (0) | 2021.02.25 |
---|---|
[프로그래머스] 행렬의 덧셈 (Java) (0) | 2021.02.23 |
[프로그래머스] 이상한 문자 만들기(Java) (0) | 2021.02.18 |
[프로그래머스] 3진법 뒤집기(Java) (0) | 2021.02.17 |
[프로그래머스] K번째수 (Java) (0) | 2021.02.09 |
댓글