Skip to main content

[level 2] 다음 큰 숫자 - 12911

Intro

문제 링크

문제 설명

자연수 $n$이 주어졌을 때, $n$의 다음 큰 숫자는 다음과 같이 정의 합니다.

  1. $n$의 다음 큰 숫자는 $n$보다 큰 자연수입니다.
  2. $n$의 다음 큰 숫자와 $n$은 2진수로 변환했을 때 1의 갯수가 같습니다.
  3. $n$의 다음 큰 숫자는 위 두 조건을 만족하는 수 중 가장 작은 수입니다.

예를 들어 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 $n$이 매개변수로 주어질 때, $n$의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.

제한 사항

  • $n$은 1,000,000 이하의 자연수입니다.

입출력 예

nresult
7883
1523

입출력 예 설명

예시 1: 78은 2진수로 1001110이며 1의 개수는 4개입니다. 83은 1010011로 1의 개수가 4개이며 78보다 큰 수 중 가장 작습니다.

예시 2: 15는 2진수로 1111이며 1의 개수는 4개입니다. 23은 10111로 1의 개수가 4개이며 15보다 큰 수 중 가장 작습니다.


구현 코드

class Solution {
public int solution(int n) {
int answer = 0;
int count = 0;
String str = Integer.toBinaryString(n);

for(int i = 0; i<str.length();i++){
if(str.charAt(i)=='1')
count ++; //1의 개수 값
}


for(int i = n+1; i<1000000;i++){
int count2 = 0;
String str2 = Integer.toBinaryString(i);
for(int j=0;j<str2.length();j++){
if(str2.charAt(j)=='1')
count2 ++;
}
if(count == count2){
answer = i;
break;
}
}



return answer;
}
}
성능 요약
메모리: 52 MB, 시간: 0.06 ms

채점결과
정확성: 70.0


효율성: 30.0


합계: 100.0 / 100.0