사람에 의해서 채점되기 때문에 구조와 네이밍에 있어서 자유롭습니다. 다만 아래의 규칙들은 존재합니다.
1. 실행 파일 이름은 **push_swap**으로 합니다. 2. Makefile을 생성하여 제출합니다. 일반적인 규칙들은 준수하며, 필요한 경우만 recompile 되도록 합니다. 3. 필요한 경우 Makefile을 포함한 libft 라이브러리를 사용하며, libft 라이브러리 컴파일 후 여러분의 프로젝트가 컴파일되도록 합니다. 4. 글로벌 변수 금지 5. C를 사용하고 norm을 준수하도록 합니다. 6. Segementation fault, bus error, double free 등과 같은 민감한 에러를 handling 해야 합니다. 7. 다음의 함수를 사용할 수 있습니다. - write, read, malloc, free, exit
3) Mandatory part
1. 2개의 스택이 주어집니다. 2. a에는 중복되는 숫자 없이 양수 음수가 랜덤으로 주어집니다. 3. b는 비어있습니다. 4. a에 오름차순으로 정리합니다. 5. 필요에 의해 다음의 함수를 사용합니다.
- sa: swap a - a에서 처음 2개의 elements를 swap 합니다. 만약 하나 이하로 남게 되면 아무것도 하지 않습니다.
- sb: swap b - b에서 처음 2개의 elements를 swap 합니다. 만약 하나이하로 남게 되면 아무것도 하지 않습니다.
- ss: sa와 sb를 동시에 진행합니다.
- pa: b의 최상위에 있는 element를 a로 올립니다. b가 비어있으면 아무것도 하지 않습니다.
- pb: a의 최상위에 있는 element를 b로 올립니다. a가 비어있으면 아무것도 하지 않습니다.
- ra: a에 있는 모든 element를 한 칸씩 위로 올립니다. 즉, 처음 있던 element를 마지막에 오게 됩니다.
- rb: b에 있는 모든 element를 한칸씩 위로 올립니다. 즉, 처음 있던 element를 마지막에 오게 됩니다.
- rr: ra와 rb를 동시에 진행합니다.
- rra: a에 있는 모든 element를 한칸씩 아래로 내립니다. 즉, 마지막에 있던 element는 처음으로 오게 됩니다.
- rra: b에 있는 모든 element를 한칸씩 아래로 내립니다. 즉, 마지막에 있던 element는 처음으로 오게 됩니다.