문제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 함수를 완성해주세요
제한사항
- dot의 길이 = 2
- dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다
- -500 ≤ dot의 원소 ≤ 500
- dot의 원소는 0이 아닙니다.
입출력 예
dot | result |
[2, 4] | 1 |
[-7, 9] | 2 |
function solution(dot) {
const [x, y, z, t] = dot;
if(x > 0 && y > 0) {
return 1;
}
if(x < 0 && y > 0) {
return 2;
}
if(x < 0 && y < 0) {
return 3;
}
if(x > 0 && y < 0) {
return 4;
}
}
입력된 좌표를 배열로 받아와서 각각의 변수 x, y, z, t에 할당합니다
x가 양수이고 y가 양수인 경우: 사분면 1에 위치합니다. 1을 반환합니다
x가 음수이고 y가 양수인 경우: 사분면 2에 위치합니다. 2를 반환합니다
x가 음수이고 y가 음수인 경우: 사분면 3에 위치합니다. 3을 반환합니다
x가 양수이고 y가 음수인 경우: 사분면 4에 위치합니다. 4를 반환합니다
문제2 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차원 배열로 변경합니다
num_list | n | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
제한사항
- num_list의 길이는 n의 배 수개입니다.
- 0 ≤ num_list의 길이 ≤ 150
- 2 ≤ n < num_list의 길이
입출력 예
num_list | n | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
[100, 95, 2, 4, 5, 6, 18, 33, 948] | 3 | [[100, 95, 2], [4, 5, 6], [18, 33, 948]] |
function solution(num_list, n) {
const result = [];
let tempArray = [];
for(let i=0; i<num_list.length; i++){
const item = num_list[i];
tempArray.push(item);
if(tempArray.length === n){
result.push(tempArray);
tempArray = [];
}
}
return result;
}
결과를 저장할 빈 배열 result를 초기화합니다
임시 배열 tempArray를 초기화합니다
주어진 숫자 리스트 num_list를 반복하면서 각 숫자 item을 가져옵니다
item을 tempArray에 추가합니다
tempArray의 길이가 n과 같아지면, tempArray를 result에 추가합니다
tempArray를 초기화하여 다음 묶음을 준비합니다
반복이 완료된 후에 result를 반환합니다
문제3 공던지기
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 < numbers의 길이 < 100
- 0 < k < 1,000
- numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다.
- numbers는 1부터 시작하며 번호는 순서대로 올라갑니다.
입출력 예
numbers | n | result |
[1, 2, 3, 4] |
2 | 3 |
[1, 2, 3, 4, 5, 6] | 5 | 3 |
[1, 2, 3] | 3 | 2 |
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;
}
}
선택할 숫자의 간격을 나타내는 변수 k를 가지고, 선택한 숫자의 개수를 나타내는 변수 cnt를 1로 초기화합니다
무한 루프를 돌면서 숫자를 선택합니다. i 값을 2씩 증가시키며 배열 길이로 나머지 연산을 수행하여 인덱스를 유지합니다
numbers 배열에서 i 인덱스에 해당하는 숫자 item을 가져옵니다
cnt와 k가 같아지면 선택된 숫자를 반환합니다
선택한 숫자의 개수를 1 증가시킵니다
반복이 계속되며 선택한 숫자의 개수가 k와 같아질 때까지 반복합니다
문제4 배열 회전시키기
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요
제한사항
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
입출력 예
numbers | direction | result |
[1, 2, 3] | "right" | [3, 1, 2] |
[4, 455, 6, 4, -1, 45, 6] | "left" | [455, 6, 4, -1, 45, 6, 4] |
function solution(numbers, direction) {
if(direction === 'right'){
const lastItem = numbers.pop()
numbers.unshift(lastItem);
}
else {
const firstItem = numbers.shift();
numbers.push(firstItem);
}
return numbers;
}
주어진 방향이 'right'인 경우:
numbers 배열에서 마지막 요소를 제거하고 lastItem 변수에 저장합니다
lastItem을 배열의 맨 앞에 추가합니다. (unshift() 함수를 사용하여 추가)
주어진 방향이 'left'인 경우:
numbers 배열에서 첫 번째 요소를 제거하고 firstItem 변수에 저장합니다.
firstItem을 배열의 맨 뒤에 추가합니다. (push() 함수를 사용하여 추가)
수정된 numbers 배열을 반환합니다