코딩테스트 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 배열을 반환합니다.
코딩테스트 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 배열을 반환합니다.