더 효율적으로 풀 수 있을 것 같은데 조건문 외에 달리 방법이 생각나지 않았다.
function solution(dot) {
if(dot[0] > 0 && dot[1] > 0){
return 1;
}else if(dot[0] < 0 && dot[1] > 0){
return 2;
}else if(dot[0] < 0 && dot[1] < 0){
return 3;
}else if(dot[0] > 0 && dot[1] < 0){
return 4;
}
}
각각의 좌표값을 가져오기 위해 구조분해를 이용함.
function solution(dot) {
const [num,num2] = dot; // 여기서 이렇게 응용되는 거구나
const check = num * num2 > 0;
return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
}
반복문을 통해 n개씩 slice 해서 넣어준다.
function solution(num_list, n) {
let answer = [];
for(i=0;i<num_list.length;i+=n){
answer.push(num_list.slice(i, i+n));
}
return answer;
}
slice 대신 splice를 이용하면 splice(i, 2)로 나타내면 된다.
slice는 i부터 i+n 전까지 자르고(index로만), splice는 i부터 2개씩 자르는 것.
function solution(numbers, k) {
return numbers[2*(k-1)%numbers.length];
}
index가 2*(k-1)로 늘어난다는건 알겠는데, 배열의 길이를 넘을 때 어떻게 처리 해야 하나 헷갈렸다.
-> 배열의 길이로 나눈 나머지로 처리하면 된다.
조건문과 for 반복문으로 해보았는데 코드가 길고 번거로워져서 array method를 활용해서 푸는게 더 좋을 것 같다.
function solution(numbers, direction) {
var answer = [];
if(direction == "right"){
answer.push(numbers[numbers.length-1])
for(i=0;i<numbers.length-1;i++){
answer.push(numbers[i])
}
}else if(direction == "left"){
for(i=1;i<numbers.length;i++){
answer.push(numbers[i])
}
answer.push(numbers[0])
}
return answer;
}
function solution(numbers, direction) {
if ("right" == direction) {
numbers.unshift(numbers.pop());
} else {
numbers.push(numbers.shift());
}
return numbers;
}
array.pop() : 배열의 마지막 요소를 제거
array.shift() : 배열의 첫 번째 요소를 제거
array.unshift() : 배열의 맨 앞에 새로운 요소를 추가
array.push() : 배열의 맨 뒤에 새로운 요소를 추가