반응형
https://programmers.co.kr/learn/courses/30/lessons/12911
코딩테스트 연습 - 다음 큰 숫자
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니
programmers.co.kr
풀이

이 문제는 그냥 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 |