문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12911

제한 사항

입출력 예

풀이
class Solution {
public int solution(int n) {
int answer = n;
while (true) {
answer++;
if (Integer.bitCount(n) == Integer.bitCount(answer)) return answer;
}
}
}
후기
처음에 replaceAll()로 풀려고 했는데 효율성 테스트에서 떨어지고, Pattern과 Matcher로 다시 시도했다. replaceAll()보다는 빨랐지만 그래도 떨어졌다... 그래서 도대체 어느 정도까지 최적화를 해야 하나 싶었는데 질문하기에서 힌트를 얻으니까 bit연산 단위 정도까지 허용되는 것 같았다. bitCount()라는 것도 처음 알게 되었다. 순수 비트 연산으로만 푼 풀이를 보니까 이해가 안 된다;; 비트 연산에 대해 공부해 봐야 할 것 같다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] 이상한 문자 만들기 (0) | 2023.08.13 |
|---|---|
| [프로그래머스][JAVA][Lv. 2] 피보나치 수 (0) | 2023.08.11 |
| [프로그래머스][JAVA][Lv. 1] 문자열 내 p와 y의 개수 (0) | 2023.08.10 |
| [프로그래머스][JAVA][Lv. 1] 약수의 합 (0) | 2023.08.10 |
| [프로그래머스][JAVA][Lv. 2] 숫자의 표현 (0) | 2023.08.10 |