[JAVA]
[프로그래머스 JAVA] 다음 큰 숫자 문제 풀이
미냠
2023. 11. 18. 14:55
반응형
이번에도 메소드를 활용하면 쉽게 풀이할 수 있는 문제이다.

입력받은 수보다 크고, 이진수로 변환 했을 때의 1의 갯수가 같아야하는 자연수를 구하는 문제이다.

처음엔 입력받은 수를 이진수로 변환하여 1의 개수를 세고
반복문을 돌려서 1의 개수와 같으면서 입력받은 수보다 큰 값을 추출해내야 하나 했는데..
그럼 당연히 효율성 테스트에서 떨어질 것을 직감했다.
그래서 bitCount라는 메소드를 활용해서 코드를 작성했다.
bitCount(a)는 a라는 Integer형 변수를 이진수로 변환한 값에서 1의 갯수를 확인하는 메소드다.
이 메소드를 활용하면
1. 입력받은 변수 bitCount 확인
2. 무한 루프 반복문으로 입력받은 변수에 +1 씩하면서 bitCount 확인
3. bitCount가 동일하면 break 반복문 탈출
이렇게 하면 효율성 테스트에서도 무리 없이 토옹과
class Solution {
public int solution(int n) {
int answer = 0;
// 1 개수 확인
int cnt = Integer.bitCount(n);
// System.out.println(cnt);
while (true) {
// 입력받은 수를 1씩 증가
n++;
// System.out.println(n);
// 증가한 수의 1 개수 확인
int nextCnt = Integer.bitCount(n);
// System.out.println(nextCnt);
// 입력받은 수와 증가된 수의 1의 개수가 맞으면 반복문 탈출
if (cnt == nextCnt) {
break;
}
}
answer = n;
return answer;
}
}

반응형