Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[JavaScript] 프로그래머스 코딩테스트 입문 : 배열 회전시키기 본문

⚙️ 코딩테스트

[JavaScript] 프로그래머스 코딩테스트 입문 : 배열 회전시키기

썸머몽 2023. 3. 26. 19:48
728x90

문제 및 제한사항

 

정수가 담긴 배열 numbers 문자열 direction 매개변수로 주어집니다. 배열 numbers 원소를 direction방향으로 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

 

**제한사항**

3 ≤ numbers의 길이 ≤ 20

direction "left" "right" 하나입니다.

 

풀이 방법

 

예를 들어 numbers=[1, 2, 3]일 때, direction이 right라면 [3, 1, 2]가 리턴되어야 한다.

 

if문으로 방향이 right인지 left인지 나누어준다.

right라면 맨 오른쪽의 요소를 삭제 > 맨 왼쪽으로 넣어주어야 한다. 

삭제할 때에는 pop()을, 맨 왼쪽으로 추가할 때에는 unshift()를 써주었다.

unshift는 배열의 맨 앞쪽에 추가하는 메서드로, 맨 끝에 추가하는 push와는 위치가 다르다.

 

left라면 맨 왼쪽의 요소를 삭제 > 맨 오른쪽으로 넣어주어야 한다.

삭제할 때에는 shift()을, 추가할 때에는 push()를 써주었다.

shift는 배열의 첫 번째 요소를 제거하고 반환하는 매서드다.

 

코드

function solution(numbers, direction) {

    if ("right" == direction) {
        numbers.unshift(numbers.pop());
    } else {
        numbers.push(numbers.shift());
    }
    return numbers;
}

 

처음에는 이렇게 안 풀고 더 어렵게 풀었다. ^_^;

function solution(numbers, direction) {
    if (direction === 'right') {
        let tmp = numbers[numbers.length-1];
        numbers.splice(-1, 1);
        numbers.unshift(tmp);
        return numbers
    } else {
        let tmp = numbers[0];
        numbers.splice(0, 1);
        numbers.push(tmp);
        return numbers
    }
}

 

right의 경우 가장 맨 끝 요소를 tmp로 선언하고, 그걸 잘라준 후 unshift로 맨 앞에 넣어주었다.

left의 경우 가장 맨 앞 요소를 tmp로 선언하고, 그걸 잘라준 후 push로 맨 뒤에 넣어주었다.

pop과 shift를 사용하지 않아서 splice로 자르고 사용했는데 이래서 매서드를 많이 알아야하는군 필요성을 느꼈다.

728x90