코딩테스트

코딩테스트 배열 회전시키기

김도현2 2023. 6. 3. 20:55
반응형

코딩테스트 배열 회전시키기

 

 

 

문제 설명

 

 

문제 출력

 

 

 

numbers 배열과 direction 문자열이 주어집니다.

 

여기서 direction에서

"right"면 numbers 문자열의 요소들의 자리를 오른쪽으로 한칸씩 밀고

"left"면 왼쪽으로 한칸씩 밀립니다.

 

이 문제는 배열 메서드 shift() 와 pop()을 이용하면 쉽게 풀 수 있을거 같습니다.

바로 갑시닷!

 

 

const numbers = [4, 455, 6, 4, -1, 45, 6]; 
let direction = "left";

var answer = [];

if(direction == "left"){
    let shift = numbers.shift();
    answer.push(...numbers,shift);
}

//[455, 6, 4, -1, 45, 6, 4]

먼저 direction 문자열이 "left" 일 경우 입니다.

 

shift() 메서드란 배열의 첫 번째 요소를 제거하고, 제거된 요소를 반환하는 메서드 입니다.

제거된 요소 자리는 앞에 요소들이 한자리씩 이동하여 메꿔지게 됩니다!

 

또 shift를 사용하여 변수에 저장할 경우 제거된 요소 하나가 변수에 반환이 되고 

남아 있는 배열은 첫번째 요소가 제거 된 상태입니다.

 

그래서 shift 란 변수에 shift를 사용하여 numbers에 4 요소를 저장하고

push()와 펼침연산자를 이용하여 numbers에 첫번째 요소를 맨 뒤 인덱스로 보냈습니다.

 

즉 answer에는 [455, 6, 4, -1, 45, 6, 4] 배열이 저장 되게 됩니다!

 

다음 right일 때 조건문을 써보겠습니다!

 

 

const numbers = [4, 455, 6, 4, -1, 45, 6]; 
let direction = "left";

var answer = [];

if(direction == "left"){
    let shift = numbers.shift();
    answer.push(...numbers,shift);
} else {
    let pop = numbers.pop();
    answer.push(pop,...numbers)
}

//[455, 6, 4, -1, 45, 6, 4]

 

right 역시 pop() 메서드를 이용하였습니다.

 

pop() 메서드란 배열(array)의 마지막 요소를 제거하고, 제거된 요소를 반환하는 메서드 입니다.

 

pop() 메서드 또한 변수를 이용하여 변수를 이용하여 반환이 가능합니다.

이것 또한 펼침연산자를 이용하여 pop()을 사용한 변수와 numbers를 이어 붙여줬습니다.

 

문제 끝!