Level 0)조건문, 배열, 수학, 시뮬레이션

Doozuu·2023년 1월 5일
0

프로그래머스 (JS)

목록 보기
11/183

📌 문제 1. 점의 위치 구하기

더 효율적으로 풀 수 있을 것 같은데 조건문 외에 달리 방법이 생각나지 않았다.

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);
}


📌 문제 2. 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개씩 자르는 것.



📌 문제 3. 공 던지기

function solution(numbers, k) {
    return numbers[2*(k-1)%numbers.length];
}

index가 2*(k-1)로 늘어난다는건 알겠는데, 배열의 길이를 넘을 때 어떻게 처리 해야 하나 헷갈렸다.
-> 배열의 길이로 나눈 나머지로 처리하면 된다.



📌 문제 4. 배열 회전시키기 ⭐️

조건문과 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;
}

array method를 활용한 풀이

  • direction이 오른쪽일 때: pop()을 통해 배열에서 마지막 요소를 제거하여 unshift()로 맨 앞에 더해준다.
  • direction이 왼쪽일 때: shift()를 통해 맨 앞의 요소를 제거하여 push()를 통해 배열의 맨 뒤에 넣어준다.
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() : 배열의 맨 뒤에 새로운 요소를 추가

profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글