A, B : stack
A : 랜덤한 양의 중복되지 않은 음수, 양수들을 포함
B : empty
stack "A" 에 모든 수들을 ascending order로 정렬시키기
👇 목표달성을 위해, 아래의 명령들을 수행가능
sa
: A의 가장 위에 있는 두 원소의 위치를 서로 바꾸기. 만약 1개의 원소만 있거나, 스택이 비어있으면 아무것도 하지 않음.sb
: B의 가장 위에 있는 두 원소의 위치를 서로 바꾸기. 만약 1개의 원소만 있거나, 스택이 비어있으면 아무것도 하지 않음.ss
: sa + sbpa
: B에서 맨 위에 있는 원소를 A의 맨 위로 이동. B가 비어 있으면 아무 것도 하지 않음.pb
: A에서 맨 위에 있는 원소를 B의 맨 위로 이동. A가 비어 있으면 아무 것도 하지 않음. ra
: A의 모든 원소들을 위로 1 인덱스만큼 이동. 첫 번째 원소는 마지막 원소가 됨.rb
: B의 모든 원소들을 위로 1 인덱스만큼 이동. 첫 번째 원소는 마지막 원소가 됨.rr
: ra + rbrra
: A의 모든 원소들을 아래로 1 인덱스만큼 이동. 마지막 원소는 첫 번째 원소가 됨.rrb
: B의 모든 원소들을 아래로 1 인덱스만큼 이동. 마지막 원소는 첫 번째 원소가 됨.rrr
: rra + rrbError
와 줄바꿈('\n'
)을 표준 에러에 출력. 에러는 일부 인자가 정수가 아니거나, 정수 범위를 초과하거나, 중복이 있는 경우를 포함한다.이 프로젝트는 단순하기 때문에, 기능을 추가할 여지가 거의 없네요. 그러나, 당신만의 <strong>체커</strong>를 만들어 보는건 어떨까요?
네? 뭐라구요? 단순해요? 거짓말하지마.....
checker 프로그램은 당신의 push_swap이 출력하는 instruction들이 실제로 stack을 제대로 정렬하는지 알려준다.
실행 명령어 예시 #> 출력 예시
./push_swap 2 1 3 6 5 8 #> sa\n pb\n pb\n pb\n sa\n pa\n pa\n pa\n
./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