Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 for 루프를 활용해 한 스택의 모든 요소를 다른 스택으로 옮기는 방법

스택(Stack)은 LIFO(Last In First Out, 후입선출) 원리로 동작하는 자료구조입니다. 즉, 가장 나중에 삽입된 요소가 가장 먼저 제거됩니다. 따라서 첫 번째 스택의 모든 요소를 다른 스택으로 옮기려면, pop() 메서드로 첫 번째 스택에서 요소를 하나씩 꺼낸 뒤, push() 메서드로 두 번째 스택에 순서대로 삽입해야 합니다.

예제 코드

아래 예제는 for 루프 조건식에서 배열의 length 속성을 활용하여, 첫 번째 스택이 빌 때까지 반복하면서 모든 요소를 두 번째 스택으로 이동시키는 방법을 보여줍니다.

var myFirstStack = [10, 20, 30, 40, 50, 60, 70];
var mySecondStack = [];

for (; myFirstStack.length; ) {
    mySecondStack.push(myFirstStack.pop());
}

console.log("첫 번째 스택에서 모든 요소를 꺼낸 후 =");
console.log(myFirstStack);
console.log("두 번째 스택에 모든 요소를 삽입한 후 =");
console.log(mySecondStack);

위 프로그램을 실행하려면 다음 명령어를 사용합니다.

node fileName.js

여기서는 파일 이름이 demo189.js라고 가정합니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

PS C:\Users\Amit\javascript-code> node demo189.js
첫 번째 스택에서 모든 요소를 꺼낸 후 =
[]
두 번째 스택에 모든 요소를 삽입한 후 =
[
    70, 60, 50, 40,
    30, 20, 10
]

코드 설명

루프의 조건식인 myFirstStack.length는 배열이 비어 있으면 0(falsy 값)이 되어 반복이 종료됩니다. 각 반복마다 pop()이 첫 번째 스택의 마지막 요소(70부터 시작)를 제거하고, 그 값을 곧바로 push()로 두 번째 스택에 추가합니다.

그 결과, 첫 번째 스택은 완전히 비게 되고([]), 두 번째 스택에는 [70, 60, 50, 40, 30, 20, 10]처럼 원래 순서가 뒤집힌 형태로 요소가 저장됩니다. 이는 스택의 LIFO 특성 때문이며, 만약 원래 순서를 유지하고 싶다면 세 번째 보조 스택을 사용하거나 두 번째 스택의 요소를 다시 한 번 역순으로 처리해야 합니다.