두 스택에 무작위로 들어오는 숫자들을 최소한의 명령어를 사용해 오름차순으로 정렬하는 문제
a, b 두개의 스택 존재
프롬프트에 ./push_swap 일련의 숫자들
을 입력한다
Ex) ./push_swap 5 3 1 2 4
그럼 a 스택에 아래와 같은 형태로 숫자가 쌓인다
최소한의 sort 명령어를 사용해, 결과적으로 a스택에 모든 숫자들이 오름차순으로 정렬되게 해야함.
명령어
sa, sb, ss
pa, pb
ra, rb, rr
rra, rrb, rrr
./push_swap 4 2 5 3 1 이렇게 들어왔을 시 a 스택에 역순으로 담겨야함.
argv[1]부터 널까지 split : 구분자 공백으로 array에 담자
array는 이중포인터를 사용해 할당 array[0] = "1" ... array[4] = "4"
argv로 2 3 1 이런 형태의 정수만이 아니라, -2 +3 1 뭐 이런 수도 들어올 수 있음.
전부 다 정제된 정수 형태로 파싱하기 위한 함수
write 함수 첫번째 인자
0 : 표준입력
1 : 표준출력
2 : 표준오류
우리는 오류를 출력할거기 때문에 write(2, "Error\n", 6); 의 형태 사용
exit();
stdlib.h 헤더파일을 include
현재 프로세스 내 파일입출력중인 것을 저장 + 종료하여 운영체제에 권한을 넘긴다
exit(0) : 정상종료
exit(1) : 에러메세지 종료
즉 return = exit(0);
스택 a에서 피봇을 정함. 피봇보다 작거나 같은 값을 스택 b로 옮긴다.
b에 쌓인 숫자들 중에서 피봇을 정함. 크거나 같은 숫자들을 a 스택으로 넘긴다.
스택 구현은 연결리스트로 했다.
노드들은 링크를 두개 가지고 있는데, 각각 전후와 연결된다. 예외로 tail 노드의 next 노드는 널이다.