본 과제에서 사용하게 될 연산은 여러가지가 있는데, 간단하게 정리하면 다음과 같다.
1. push - 한 스택의 top에 있는 숫자를 다른 스택의 top으로 옮긴다.
2. swap - 한 스택의 top에 있는 숫자를 그 다음 순번에 있는 숫자와 바꾼다.
3. rotate - 한 스택을 1회 회전한다. 스택의 첫 번째 숫자가 스택의 마지막 숫자가 된다.
4. reverse rotate - 한 스택을 1회 역회전한다. 스택의 마지막 숫자가 첫 번째 숫자가 된다.
이중 연결 리스트를 이용하여 스택을 구현 한 이상, 위의 연산 모두 각 노드를 연결하고 있는 포인터의 주소값만 바꿔주면 손쉽게 구현할 수 있었다.
다만 이 과정이 상당히 헷갈려서...ㅎ 각 과정을 열심히 그림으로 그려가며 구현을 했다 ㅎㅎㅎㅎ/...
주의해야 할 점은 각 스택에 요소가 없을 때, 요소가 하나만 있을 때, 요소가 2개 있을때(특히 까다로움;) 예외처리를 잘 해줘야 한다는 것...
위의 4가지 기본 연산을 요런식으로 구현한 후 pa, pb, sa, sb, ss.... 등등의 각 연산을 함수로 작성하여 구현하였다.
'42 > 42cursus' 카테고리의 다른 글
[push_swap] 4. 정렬 알고리즘 (0) | 2022.01.24 |
---|---|
[push_swap] 3. 알고리즘 구현 전, 구현 후 반드시 확인해야 하는 사항 (0) | 2022.01.18 |
[push_swap] 1. 입력 검증 및 스택 만들기 (0) | 2022.01.12 |
[so_long] 4. 키 입력을 받아오기 (0) | 2021.10.19 |
[so_long] 3. 게임 초기화하기 (0) | 2021.10.19 |
댓글