코딩테스트 37일차
정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
function solution(n) {
var x = Math.sqrt(n); // n의 제곱근을 계산하여 x에 저장
if (Number.isInteger(x)) { // x가 정수인지 확인
return Math.pow(x + 1, 2); // x+1의 제곱을 계산하여 반환
} else {
return -1; // x가 정수가 아니라면 -1을 반환
}
}
✏️풀이
주어진 함수는 solution이라는 이름의 함수로, 매개변수로 양의 정수 n을 받습니다.
Math.sqrt(n)을 사용하여 n의 제곱근을 계산하고, 이 값을 x에 저장합니다.
Number.isInteger(x)를 사용하여 x가 정수인지 확인합니다. Number.isInteger() 함수는 주어진 값이 정수인지를 판별하며, 정수일 경우 true를 반환하고 정수가 아닐 경우 false를 반환합니다.
x가 정수인 경우, x+1의 제곱을 계산하여 반환합니다. Math.pow(base, exponent) 함수는 base의 exponent 거듭제곱 값을 계산합니다.
x가 정수가 아닌 경우, -1을 반환합니다.
K번째수
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
function solution(array, commands) {
var answer = [];
// commands 배열을 순회하면서 연산을 수행
for (var i = 0; i < commands.length; i++) {
var command = commands[i];
var start = command[0]; // 자르기 시작하는 인덱스
var end = command[1]; // 자르기 끝나는 인덱스
var k = command[2]; // k번째 수
// 배열을 자르고 정렬한 후 k번째 수를 answer에 추가
var slicedArray = array.slice(start - 1, end); // start부터 end까지 배열을 자름
var sortedArray = slicedArray.sort((a, b) => a - b); // 배열을 오름차순으로 정렬
answer.push(sortedArray[k - 1]); // k번째 수를 answer에 추가
}
return answer;
}
✏️풀이
solution이라는 이름의 함수를 선언합니다. 이 함수는 array와 commands라는 두 개의 매개변수를 받습니다.
answer라는 빈 배열을 선언합니다. 이 배열은 연산 결과를 저장하기 위해 사용됩니다.
commands 배열을 순회하면서 각각의 연산을 수행합니다.
command 변수에 현재 순회 중인 연산이 담깁니다.
start, end, k 변수에는 command 배열의 첫 번째, 두 번째, 세 번째 원소가 각각 할당됩니다.
array.slice(start - 1, end)를 사용하여 array를 start부터 end까지 자른 후, slicedArray 변수에 저장합니다. start와 end는 1부터 시작하는 인덱스이므로 실제 배열의 인덱스와 맞추기 위해 start - 1을 사용합니다.
slicedArray.sort((a, b) => a - b)를 사용하여 slicedArray 배열을 오름차순으로 정렬한 후, sortedArray 변수에 저장합니다. sort() 함수의 콜백 함수 (a, b) => a - b는 비교 함수로서, 숫자를 오름차순으로 정렬하기 위해 사용됩니다.
sortedArray[k - 1]를 사용하여 sortedArray 배열에서 k번째 수를 찾고, 이를 answer 배열에 추가합니다. k는 1부터 시작하는 순서이므로 실제 배열의 인덱스와 맞추기 위해 k - 1을 사용합니다.
commands 배열의 모든 연산에 대해 위의 과정을 반복합니다.
최종적으로 answer 배열을 반환합니다.