반응형
https://programmers.co.kr/learn/courses/30/lessons/12911
풀이
이 문제는 그냥 1씩 증가시키면서 확인하는 방식으로 풀어도 효율성을 통과합니다.
- n을 2진수로 변환한 후 1의 개수를 세줍니다.
- n+1부터 1씩 증가시키면서 2진수 변환 시의 1의 개수를 세고 이것이 n의 것과 같아지는 경우를 찾을 때까지 반복합니다.
좀 더 복잡한 방법으로 푸는 방식도 있다고 하는데 저는 안해봤습니다ㅎㅎ
class Solution {
public int solution(int n) {
int answer = 0;
//n을 2진수 변환시 1이 몇개 인지
int cnt = countOne(n);
int num = n+1;
//n+1부터 확인하면서 찾기
while(true){
int check = countOne(num);
if(check == cnt){
answer = num;
break;
}
num++;
}
return answer;
}
//2진수 변환 시 1이 몇개 있는지 세주는 함수
int countOne(int num){
int cnt = 0;
while(num > 0){
if(num%2 == 1)
cnt++;
num = num / 2;
}
return cnt;
}
}
728x90
반응형
'알고리즘 > PS - 프로그래머스' 카테고리의 다른 글
[프로그래머스 - Java] 땅따먹기 (0) | 2021.08.30 |
---|---|
[프로그래머스 - Java] [3차] n진수 게임 (0) | 2021.08.30 |
[프로그래머스 - Java] 괄호 회전하기 (0) | 2021.08.26 |
[프로그래머스 - Java] 모두 0으로 만들기 (0) | 2021.08.23 |
[프로그래머스 - Java] 2개 이하로 다른 비트 (0) | 2021.08.23 |