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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 level2 과제 진행하기 자바 JAVA 풀이 (0) | 2025.03.13 |
|---|---|
| 프로그래머스 뒤에 있는 큰 수 찾기 (0) | 2023.08.29 |
| 프로그래머스 더 맵게 자바 풀이 (0) | 2022.06.09 |
| 프로그래머스 큰 수 만들기 자바 풀이 (0) | 2022.06.08 |
| 프로그래머스 전화번호 목록 자바 풀이 (0) | 2022.06.05 |