문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120844
답안1 (pop, push, shift, unshift 사용)
function solution(numbers, direction) {
if (direction === "right") {
const over = numbers.pop()
numbers.unshift(over)
} else {
const over = numbers.shift()
numbers.push(over)
}
return numbers;
}
- pop() : 배열의 우측 끝 엘리먼트를 제거해주고, 제거한 엘리먼트를 리턴하는 메서드.
- push() : 배열의 우측 끝에 엘리먼트를 추가해주는 메서드.
- shift() : 배열의 좌측 끝에 엘리먼트를 제거해주고, 제거한 엘리먼트를 리턴하는 메서드.
- unshift() : 배열의 좌측 끝에 엘리먼트를 추가해주는 메서드.
오잉? 답안
function solution(numbers, direction) {
if (direction === 'right') {
numbers = [numbers.pop(), ...numbers]
} else {
numbers = [...numbers.slice(1), numbers.shift()]
}
return numbers
}
- numbers를 깡으로 바꿔버리는 방법이다.
- numbers.pop()은 맨 앞의 배열을 뽑아서 그 값을 리턴한다. 따라서 맨 앞에 있던 배열 내 엘리먼트가 남게 되고
스프레드 연산자 ...numbers는 pop된 배열을 그대로 스프레드 해준다. - ...numbers.slice(1)은 복제한 배열의 1번째 인덱스부터 스프레드 연산자로 배열에 뿌려준다.
이후 shift 메서드를 통해 좌측 끝의 엘리먼트를 맨 우측에 놓아준다. - 재밌다~
'코테 문제 풀이' 카테고리의 다른 글
[레벨 0] 369 게임 (메서드체이닝, 정규표현식) (0) | 2022.12.17 |
---|---|
[레벨 0] 외계행성의 나이 (문자열 - 배열 - 문자열) (0) | 2022.12.17 |
[레벨 0] 가위 바위 보 (if 노가다, 객체 활용) (0) | 2022.12.17 |
[레벨 0] 배열의 유사도 (이중 for문, 메서드) (0) | 2022.12.09 |
[레벨 0] 특정 문자 제거하기 (for문, replaceAll, 정규표현식) (0) | 2022.12.08 |