PROGRAMMERS/연습문제

[프로그래머스] [JAVA] [Level 2] [연습문제] 다음 큰 숫자

c0mmedes 2022. 9. 15. 23:12



1. Integer.toBinaryString() + replace() + length() 

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
    
        while(true){
            answer++;            
            
            if(answer>n && Integer.toBinaryString(answer).replace("0","").length() 
               == Integer.toBinaryString(n).replace("0","").length()){
                return answer;
            }
        }
    }
}
  • 테스트 케이스는 통과하지만 효율성 테스트에서 시간 초과됨

 

2. for문으로 조건1을 만족 + Integer.bitCount 

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
    
        // n보다 1크게 설정해줌으로써 조건 1만족
        for(int i=n+1; ; i++){
            // i의 이진수중 true의 개수와 n의 이진수중 true의 개수가 같을 때
            if(Integer.bitCount(i) == Integer.bitCount(n)){
                answer = i;
                return answer;
            }
        }        
    }
}
  • 통과

  • Integer.toBinaryString(n) - 10진수 -> 2진수
  • Integer.bitCount(n) - 정수 n에서 true bit의 개수 반환