본문 바로가기
PS/프로그래머스

[프로그래머스 *Java] - 다음 큰 숫자

by Jman 2022. 9. 6.

https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

조건

제한시간 : 20분이내

이 문제는 그렇게 어렵지 않다.
진법 변환하는 것만 잘 생각하면 될 거 같다.
아래 코드는 어떤 진법이든 원하는 갯수를 셀 수 있게끔 로직을 구현했지만,

문제에서 원하는 요구사항에 더 적합한 메서드는 Integer.bitCount(n); 다.
이진법 내에서 1의 갯수를 찾아 return 시켜주는 메서드다.

 

class Solution {
    // 2진수 변환
    public String transferRadix (int n, int radix) {
        return Integer.toString(n, radix);
    }
    
    // 원하는 숫자 갯수 count
    public int countNumberInString (String s, int targetNumber) {
        int result = 0;
        
        for (int i = 0; i < s.length(); i++) {
            int word = s.charAt(i) - '0';
            if (word == targetNumber) {
                result++;
            }
        }
        
        return result;
    }
    
    
    public int solution(int n) {
        int answer = n;
        int target = countNumberInString(transferRadix(answer++, 2), 1);
        
        while(true) {
            int countNumber =  countNumberInString(transferRadix(answer, 2), 1);
            if (target == countNumber) break;
            
            answer++;
        }
        return answer;
    }
}