문제 1. 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
function solution(numbers, num1, num2) {
let answer = numbers.slice(num1, num2 + 1);
return answer;
}
solution 함수는 numbers, num1, num2라는 매개변수를 입력으로 받습니다.
numbers는 원본 배열이며, num1은 시작 인덱스, num2는 종료 인덱스를 나타냅니다.
answer는 numbers 배열의 num1부터 num2까지의 부분 배열을 추출하여 저장합니다. slice 메소드를 사용하여 해당 부분 배열을 생성합니다. num1은 시작 인덱스이므로 포함되고, num2는 종료 인덱스이므로 포함됩니다.
추출된 부분 배열을 answer에 할당합니다.
최종적으로 answer를 반환하여 함수의 결과로 출력됩니다.
문제 2. 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
function solution(age) {
let result = '';
while (age > 0) {
const remainder = age % 10; // 나이의 일의 자리 수
result = String.fromCharCode(97 + remainder) + result; // 알파벳으로 변환하여 결과에 추가
age = Math.floor(age / 10); // 나이를 10으로 나눈 몫으로 갱신
}
return result;
}
solution 함수는 age라는 매개변수를 입력으로 받습니다.
result는 최종 변환 결과를 저장할 변수입니다.
while 반복문을 사용하여 age가 0보다 큰 동안 반복합니다.
remainder 변수에 age를 10으로 나눈 나머지 값을 저장합니다. 이는 age의 일의 자리 숫자를 나타냅니다.
String.fromCharCode(97 + remainder)를 사용하여 remainder에 해당하는 알파벳 문자를 생성합니다. 97은 소문자 알파벳 'a'의 유니코드 값입니다. 따라서 remainder의 값에 97을 더하면 해당 알파벳의 유니코드 값이 됩니다.
알파벳 문자열을 결과(result)의 앞쪽에 추가하기 위해 result 변수의 값을 String.fromCharCode(97 + remainder)와 결합합니다.
age를 10으로 나눈 몫을 새로운 age 값으로 갱신합니다. 이는 age의 일의 자리 숫자를 제거하는 역할을 합니다.
age가 0보다 큰 동안 위의 과정을 반복합니다.
반복이 종료되면 result를 반환하여 함수의 결과로 출력됩니다.
문제 3. 외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(emergency) {
let answer = new Array(emergency.length).fill(1);
for (let i = 0; i < emergency.length; i++) {
emergency.map((v) => {
if (emergency[i] < v) answer[i]++;
});
}
return answer;
}
solution 함수는 emergency라는 매개변수를 입력으로 받습니다. 이는 응급 상황에 대한 정보가 담긴 배열입니다.
answer 변수는 응급 상황의 우선순위를 담을 배열입니다.
초기 값으로 emergency.length 길이의 배열을 생성하고 1로 채웁니다.
for 반복문을 사용하여 emergency 배열의 각 요소를 순회합니다.
내부에 있는 emergency.map 메서드는 emergency 배열을 순회하면서 현재 요소보다 큰 값이 있는지 확인합니다.
만약 현재 요소(emergency[i])보다 큰 값(v)이 있다면, 해당 우선순위(answer[i])를 1 증가시킵니다.
반복문을 통해 모든 요소에 대해 위의 과정을 수행합니다.
마지막으로 우선순위(answer) 배열을 반환합니다.
문제 4. 순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
let answer = 0;
// 숫자 i를 1부터 n까지 증가시키면서 두 숫자의 곱이 n인 경우를 찾음
for (let i = 1; i <= n; i++) {
if (n % i === 0) {
answer++;
}
}
return answer;
}
solution 함수는 n이라는 매개변수를 입력으로 받습니다. 이는 약수를 구할 숫자입니다.
answer 변수는 약수의 개수를 담을 변수입니다. 초기 값으로 0을 설정합니다.
for 반복문을 사용하여 1부터 n까지의 숫자를 증가시키면서 약수를 찾습니다.
if 문을 사용하여 n을 현재 숫자 i로 나눈 나머지가 0인 경우를 찾습니다. 즉, i가 n의 약수인 경우입니다.
약수를 찾았을 때마다 answer 변수를 1 증가시킵니다.
반복문을 통해 모든 숫자에 대해 위의 과정을 수행합니다.
마지막으로 약수의 개수인 answer 값을 반환합니다.