스택 a를 오름차순으로 정렬해야합니다. 가장 작은 명령어 목록을 표시해야 하며 가장 작은 숫자가 맨 위에 표시됩니다.
command | introduce |
---|---|
sa (swap a) | 스택 a의 맨 위에 있는 처음 2개의 요소를 바꿉니다. (요소가 하나만 있거나 없는 경우 아무 작업도 수행하지 않습니다.) |
sb (swap b) | 스택 b의 맨 위에 있는 처음 2개의 요소를 바꿉니다. (요소가 하나만 있거나 없는 경우 아무 작업도 수행하지 않습니다.) |
ss (sa && sb) | sa와 sb를 한번에 수행합니다. |
pa (push a) | b 맨 위에 있는 첫 번째 요소를 가져와서 a 맨 위에 놓습니다. b가 비어있으면 아무것도 하지 않습니다. |
pb (push b) | a 맨 위에 있는 첫 번째 요소를 가져와서 b 맨 위에 놓습니다. a가 비어있으면 아무것도 하지 않습니다. |
ra (ratate a) | 스택 a의 모든 요소를 1만큼 위로 이동합니다. 첫 번째 요소가 마지막 요소가 됩니다. |
rb (ratate b) | 스택 b의 모든 요소를 1만큼 위로 이동합니다. 첫 번째 요소가 마지막 요소가 됩니다. |
rr (ra && rb) | ra와 rb를 한번에 수행합니다. |
rra (revers-ratate a) | 스택 a의 모든 요소를 1만큼 아래로 이동합니다. 마지막 요소가 첫 번째 요소가 됩니다. |
rrb (revers-ratate b) | 스택 b의 모든 요소를 1만큼 아래로 이동합니다. 마지막 요소가 첫 번째 요소가 됩니다. |
rrr (rra && rrb) | rra와 rrb를 한번에 수행합니다. |
$>./push_swap 2 1 3 6 5 8
sa
pb
pb
pb
sa
pa
pa
pa
$>./push_swap 0 one 2 3
Error
$>
$>ARG="4 67 3 87 23"; ./push_swap $ARG | wc -l
6
$>ARG="4 67 3 87 23"; ./push_swap $ARG | ./checker_OS $ARG
OK
$>
작성한 코드를 바탕으로 cheker를 만들어 push_swap이 생성한 명령어 목록이 실제로 스택을 제대로 정렬하는지 확인할 수 있습니다.
$>./checker 3 2 1 0
rra
pb
sa
rra
pa
OK
$>./checker 3 2 1 0
sa
rra
pb
KO
$>./checker 3 2 one 0
Error
$>./checker "" 1
Error
$>