본문 바로가기
42/42cursus

[push_swap] 2. 스택 연산 구현하기

by jaemjung 2022. 1. 12.

본 과제에서 사용하게 될 연산은 여러가지가 있는데, 간단하게 정리하면 다음과 같다.

1. push - 한 스택의 top에 있는 숫자를 다른 스택의 top으로 옮긴다.
2. swap - 한 스택의 top에 있는 숫자를 그 다음 순번에 있는 숫자와 바꾼다.
3. rotate - 한 스택을 1회 회전한다. 스택의 첫 번째 숫자가 스택의 마지막 숫자가 된다.
4. reverse rotate - 한 스택을 1회 역회전한다. 스택의 마지막 숫자가 첫 번째 숫자가 된다.

 

이중 연결 리스트를 이용하여 스택을 구현 한 이상, 위의 연산 모두 각 노드를 연결하고 있는 포인터의 주소값만 바꿔주면 손쉽게 구현할 수 있었다.

 

다만 이 과정이 상당히 헷갈려서...ㅎ 각 과정을 열심히 그림으로 그려가며 구현을 했다 ㅎㅎㅎㅎ/...

 

치열한 고민의 흔적...

 

주의해야 할 점은 각 스택에 요소가 없을 때, 요소가 하나만 있을 때, 요소가 2개 있을때(특히 까다로움;) 예외처리를 잘 해줘야 한다는 것...

 

위의 4가지 기본 연산을 요런식으로 구현한 후 pa, pb, sa, sb, ss.... 등등의 각 연산을 함수로 작성하여 구현하였다.

댓글