Because Swap_push isn't as natural.
-
push_swap 프로젝트는 단순하고 매우 효과적인 알고리즘 프로젝트이다.
-
데이터는 정렬되어야 한다.
-
int 값, 2개의 스택이 있고, 스택 실행에 대한 설명이 있어야 한다.
-
Checker, integer 변수가 있고, 표준 출력으로 지시자를 읽어야 한다.
-
만약, integer 값들이 정렬되어 있으면 OK를 출력하고, 아닌 경우에는 KO를 출력해야 한다.
-
push_swap, integer 변수를 받아 정렬하는 지시어 Push_swap을 사용하여 가장 작은 표준 출력 프로그램을 계산하고, 출력해야 한다.
- 정렬 알고리즘을 작성하는 것은 복잡도 개념을 처음 마주하기 때문에, 항상 코더의 삶에서 매우 중요한 단계이다.
- 정렬 알고리즘과 복잡도는 잡 인터뷰에서 나오는 고전적인 질문이다.
- 결국에는 마주하게 되는 개념이므로 개념을 보는 것이 좋다.
- 이 프로젝트에서 객체를 공부하는 것은 rigor, C 사용, 기본 알고리즘이다.
- 가장 빠르게 정렬하는 방법은 간단하지 않다. 가장 효과적인 정렬 알고리즘은 다를 수 있다.
- 이 프로젝트는 사람이 직접 평가하는 것이다. 비록, 아래의 요구된 리스트를 존중하되, 파일 이름을 정하는 것은 자유이다.
- 처음 실행가능한 파일은 checker 이고, 그 다음은 push_swap 이어야 한다.
- Makefile을 제출해야 하고, 일반적인 규칙을 포함해야하고, 프로젝트를 컴파일할 있다.
- 필요하다면 다시 컴파일할 수 있다.
- library 를 사용할 수 있고, libft folder를 제출해야 한다.
- Makefile은 library를 컴파일해야 하고, 그러고 나서 프로젝트를 컴파일해야 한다.
- 전역변수는 사용하면 안된다.
- 프로젝트는 놈 규정에 맞추어 C 언어로 작성해야 한다.
- 신경써서 에러를 다루어야 한다. 예상치 못한 상황에서 프로그램은 중단되서는 안된다. (Segmentation fault, bus error, double free, etc)
- 프로그램은 memory leaks가 있어서는 안된다.
- mandatory part에는 아래의 함수들이 있어야 한다. (write, read, malloc, free, exit)
- 게임은 a, b로 명명된 2개의 스택으로 구성되어 있다.
- a는 양수나 음수 중 랜덤한 하나의 수가 포함된다.
- b는 비워져 있다.
- a 스택에서는 오름차순으로 정렬해야 한다.
- sa : swap a - a 스택의 꼭대기에서 2개의 값을 바꿔라. 만약, 스택 내에 원소가 1개 이하이면 아무것도 안한다.
- sb : swap b - b 스택의 꼭대기에서 2개의 값을 바꿔라. 만약, 스택 내에 원소가 1개 이하이면 아무것도 안한다.
- ss : sa, sb 를 동시에 한다.
- pa : push a - b의 첫번째 값을 가지고, a에 넣어라. 단, b가 비어있으면 아무것도 하지않는다.
- pb : push b - a의 첫번째 값을 가지고, b에 넣어라. 단, a가 비어있으면 아무것도 하지않는다.
- ra : rotate a - a 스택의 모든 값들을 한 칸씩 위로 올려라. 첫번째 값은 마지막 값이 된다.
- rb : rotate b - b 스택의 모든 값들을 한 칸씩 위로 올려라. 첫번째 값은 마지막 값이 된다.
- rr : ra, rb를 동시에 실행한다.
- rra : reverse rotate a - 스택의 모든 값들을 한 칸씩 내린다. 마지막 값이 첫번째 값이 된다.
- rrb : reverse rotate b - 스택의 모든 값들을 한 칸씩 내린다. 마지막 값이 첫번째 값이 된다.
- rrr : rra, rrb가 동시에 실행된다.
- Checker 는 integers 리스트로 이루어진 스택을 변수로 갖는다.
- 첫번째 변수는 스택의 맨 꼭대기에 있어야 한다. 순서에 유의해야 한다.
- checker에 주어진 변수가 없다면, 중단하고 아무것도 출력하지 않는다.
- checker는 표준 입력으로 입력을 기다릴 것이다. 각각의 지시자는 '\n'로 구분된다.
- 모든 지시자를 확인하면, checker는 변수로 받은 스택에서 실행할 것이다.
- 지시자를 실행한 후에, 스택 a는 정렬되고, b는 비어있다.
- 스택 a가 정렬된 경우, checker는 표준 출력으로 'OK\n'를 출력해야 한다.
- 다른 모든 경우에 대해서, checker는 표준 출력으로 'KO\n'을 출력해야 한다.
- 오류가 있는 경우, 'Error\n'을 표준 오류로 출력해야 한다.
- 오류는 변수가 integer가 아닌 경우, 변수가 다른 integer 보다 큰 경우, 중첩되는 경우, 지시자가 없는 경우, 바르지않게 형성된 경우이다.
- push_swap 프로그램은 integers의 리스트를 형식으로 변수를 입력 받는다.
- 첫번째 변수는 스택의 꼭대기에 위치해야 한다.
- 프로그램은 a 스택을 정렬할 수 있는 지시자의 최소 리스트를 출력해야 한다. 가장 작은 수가 꼭대기에 있다.
- 지시자는 '\n'로 나뉘어야 한다. 다른건 없다.
- 목표는 가능한 최소한의 횟수로 스택을 정렬해야한다.
- 오류의 경우, "Error\n"를 표준 오류 출력으로 출력해야한다. 오류는 integer 변수가 아니거나, 변수가 다른 수보다 크거나 중복되는 경우가 있다.