개발 공부 기록
728x90

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

 

프로그래머스

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

programmers.co.kr

정석대로 풀었지만 시간 초과가 나던 문제.

알고보니 내가 여기에 적합한 함수를 몰라서 돌아갔던 것!

 

기존에는 Integer.toBinaryString(n) 메서드를 이용해 이진수로 변환, 그리고 replaceAll("1","")을 이용해 글자 수의 차이를 이용해 1의 개수가 몇개였는지 확인했는데, 그게 아니라

 

Integer.bitCount를 이용하면 해당 문자열에 1이 몇개가 있는지, bit true 개수를 알려준다!

이런 좋은 함수는 계속 외워둬야 하는데.. 아무튼 이렇게 고치니 시간초과 안나고 잘 풀렸다.

 

class Solution {
    public int solution(int n) {
        
        int cnt = Integer.bitCount(n);
        int nextCnt;
        
        while(true) {
            n ++;
            nextCnt = Integer.bitCount(n);
            
            if(cnt == nextCnt) break;
        }
        
        return n;
    }
}
728x90
profile

개발 공부 기록

@찐만두

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!