문제 1.
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
function solution(dot) {
const x = dot[0];
const y = dot[1];
if (x > 0 && y > 0) {
return 1;
} else if (x < 0 && y > 0) {
return 2;
} else if (x < 0 && y < 0) {
return 3;
} else if (x > 0 && y < 0) {
return 4;
}
}
solution 함수는 dot라는 매개변수를 입력으로 받습니다. 이는 좌표 평면상의 점을 의미하는 배열입니다.
dot 배열의 첫 번째 요소를 x 변수에 할당합니다. 이는 점의 x 좌표를 나타냅니다.
dot 배열의 두 번째 요소를 y 변수에 할당합니다. 이는 점의 y 좌표를 나타냅니다.
조건문을 사용하여 좌표를 판별합니다.
만약 x가 양수이고 y가 양수인 경우, 이는 제 1사분면에 속하는 점입니다. 따라서 1을 반환합니다.
만약 x가 음수이고 y가 양수인 경우, 이는 제 2사분면에 속하는 점입니다. 따라서 2를 반환합니다.
만약 x가 음수이고 y가 음수인 경우, 이는 제 3사분면에 속하는 점입니다. 따라서 3을 반환합니다.
만약 x가 양수이고 y가 음수인 경우, 이는 제 4사분면에 속하는 점입니다. 따라서 4를 반환합니다.
문제 2. 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.
num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.
function solution(num_list, n) {
const result = [];
for (let i = 0; i < num_list.length; i += n) {
const chunk = num_list.slice(i, i + n);
result.push(chunk);
}
return result;
}
solution 함수는 num_list와 n이라는 두 개의 매개변수를 입력으로 받습니다. num_list는 숫자로 이루어진 배열이고, n은 나눌 크기를 나타냅니다.
result라는 빈 배열을 생성합니다. 이 배열은 결과로 반환할 2차원 배열입니다.
for 반복문을 사용하여 배열을 n 크기로 나눕니다. 반복문의 초기값 i는 0부터 시작하고, i를 n만큼 증가시킵니다.
num_list 배열의 i부터 i + n - 1까지의 요소를 추출하여 chunk라는 배열을 생성합니다. 이는 현재 나눈 부분 배열입니다.
result 배열에 chunk 배열을 추가합니다.
반복문이 종료되면 result 배열을 반환합니다. 이는 원래 배열을 n 크기로 나눈 2차원 배열입니다.
문제 3. 머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
function solution(numbers, k) {
let cnt = 1;
for(let i = 0; ;i+=2){
i %= numbers.length;
const item = numbers[i];
if(cnt === k ) {
return item;
}
cnt+=1;
}
}
solution 함수는 numbers와 k라는 두 개의 매개변수를 입력으로 받습니다. numbers는 숫자로 이루어진 배열이고, k는 선택할 요소의 위치를 나타냅니다.
cnt라는 변수를 1로 초기화합니다. 이 변수는 현재까지 선택한 요소의 개수를 나타냅니다.
for 반복문을 사용하여 배열의 요소를 선택합니다. 반복문의 초기값 i는 0부터 시작하고, 2씩 증가합니다.
i를 배열의 길이로 나눈 나머지를 구합니다. 이는 배열의 인덱스 범위를 벗어나지 않도록 합니다.
numbers 배열에서 i 위치의 요소를 item 변수에 저장합니다.
cnt가 k와 같아지면 선택한 요소를 반환합니다.
cnt를 1씩 증가시킵니다.
반복문이 종료되지 않고 계속 실행되도록 조건식을 비워둡니다.
문제 4. 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
function solution(numbers, direction) {
const answer = [];
if(direction === 'right'){
answer.push(numbers[numbers.length - 1]);
for(let i=0; i<numbers.length-1; i++){
answer.push(numbers[i]);
}
} else {
for(let i=1; i<numbers.length; i++) {
answer.push(numbers[i]);
}
answer.push(numbers[0]);
}
return answer;
}
solution 함수는 numbers와 direction라는 두 개의 매개변수를 입력으로 받습니다. numbers는 숫자로 이루어진 배열이고, direction은 회전 방향을 나타냅니다.
answer라는 빈 배열을 선언합니다. 결과로 반환할 회전된 배열입니다.
만약 direction이 'right'인 경우, 오른쪽으로 회전시키는 로직을 수행합니다.
numbers 배열의 마지막 요소를 answer 배열에 추가합니다.
numbers 배열의 첫 번째부터 마지막 이전 요소까지를 answer 배열에 순서대로 추가합니다.
그렇지 않은 경우, 왼쪽으로 회전시키는 로직을 수행합니다.
numbers 배열의 두 번째부터 마지막 요소까지를 answer 배열에 순서대로 추가합니다.
numbers 배열의 첫 번째 요소를 answer 배열에 추가합니다.
최종적으로 answer 배열을 반환합니다.