https://school.programmers.co.kr/learn/courses/30/lessons/12911
코딩테스트 연습 > 연습문제 > 다음 큰 숫자
난이도: LEVEL2
알고리즘 유형: 구현
풀이 설명
다른 사람들 풀이를 보면 숫자를 문자열로 바꾸고 또 다시 숫자로 바꿔서 반환하는데
나는 문자열로 변환 작업을 하지 않고 풀었다.
그냥 while 문 안에서 숫자를 1씩 늘려가면서 해당 숫자를 2로 나누었을 때 1이면 1 개수를 증가하여
초기 n의 1 개수와 같으면 바로 return 하였다.
정답 코드
class Solution {
public int solution(int n) {
int cnt = count(n);
while(true){
if(cnt == count(++n)){
return n;
}
}
}
public static int count(int input){
StringBuilder sb = new StringBuilder ();
int cnt = 0;
while(input >= 2){
if(input % 2 == 1) cnt++;
input /= 2;
}
if(input == 1) cnt++;
return cnt;
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL2 전화번호 목록 (1) | 2024.11.12 |
---|---|
[JAVA] 프로그래머스 LEVEL2 올바른 괄호 (2) | 2024.11.09 |
[JAVA] 프로그래머스 LEVEL2 미로 탈출 (1) | 2024.11.09 |
[JAVA] 프로그래머스 LEVEL3 야근 지수 (1) | 2024.11.08 |
[JAVA] 프로그래머스 LEVEL3 보행자 천국 (1) | 2024.11.07 |