문제 

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

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

예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.

자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.

 

 

입출력

n result
78 83
15 23

 

입출력 #1

문제 예시와 같습니다.

 

입출력 #2

15(1111)의 다음 큰 숫자는 23(10111)입니다.

 

 

제한 사항

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

 

 

코드

function solution(n) {
    var answer = n;
    var nCount = count1(n);
    
    while(true) {
        answer++;
        if(nCount == count1(answer)) break;
    }
    return answer;
}
    
function count1(num) {
    var binary = num.toString(2).split('').sort((a,b)=>b-a);
    var count = 0;
    
    for(var i=0; i<binary.length; i++) {
        if(binary[i]==0) break;
        count++;
    }
    return count;
}

 

 

 

문제 

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

 

 

입출력

n result
15 4

 

입출력 #1

문제의 예시와 같습니다.

 

 

제한 사항

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

 

 

코드

function solution(n) {
    var answer = 1;
    
    for(var i=2; i<n/2; i++) {
        if(n/i >= i/2) {
            if(i%2==0) {
                if(n%i==i/2) {
                    answer++;
                }
            } else if(n%i==0) {
                answer++;
            }
        }
    }
    
    return answer;
}

 

 

 

문제 

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

 

 

입출력

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

 

 

제한 사항

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

 

 

코드

function solution(s) {
    var answer = '';
    var num = s.split(' ');
    
    num.forEach(element=> element=Number(element));
    num.sort((a,b)=>a-b);
    answer = num.shift()+' '+num.pop();
    
    return answer;
}

 

 

+ Recent posts