본문 바로가기
Others/42Seoul

push_swap 개발회고

by tonyhan18 2022. 4. 9.
728x90

문서

- 정렬 알고리즘을 구현하라

- C 언어로 작성할것

- norm 에러 체크할것

- 예기치 못한 종료 금지

- 메모리 누수 금지

- Makefile 작성 -Wall -Wextra -Werror 반드시 세우기

- $(NAME), all, clean, fclean, re 명령어 포함하기

- 보너스까지 했다면 bonus 명령도 포함되기. 보너스 파일은 뒤에 _bonus.{c/h} 가 붙을것

- libft 폴더안에 libft 관련 함수 집어넣기

- 예제 케이스 준비하기

 

구현

- a, b 두개의 스택준비

- 처음시작시 a에는 임의의 숫자가 들어감. b는 비어있음

- a 스택에 숫자를 오름차순으로 정렬하기

sa(swap a) : stack a의 최상위 2 성분의 위치 바꾸기

sb(swap b) : stack b의 최상위 2 성분의 위치 바꾸기

ss : sa and sb at the same time

pa(push a) : b의 최상위 성분을 a에 집어넣기 (b가 비어있다면 아무것도 하지 않기)

pb(push b) : a의 최상위 성분을 b에 집어넣기 (a가 비어있다면 아무것도 하지 않기)

ra(rotate a) : a의 성분을 모두 한칸씩 위로, 가장 위의 성분은 가장 아래로

rb(rotate b) : b의 성분을 모두 한칸씩 위로, 가장 위의 성분은 가장 아래로

rr : ra and rb at the same time

rra(reverse rotate a) : a의 성분을 모두 한칸씩 아래로, 가장 아래 성분은 가장 위로

rrb(reverse rotate b) : b의 성분을 모두 한칸씩 아래로, 가장 아래 성분은 가장 위로

rrr : rra and rrb at the same time

 

규칙

read, write, malloc, free, exit 가능

Makefile relink 금지

전역변수 금지

가장 적은 수의 수행이 되어서 a에 정렬된 결과가 나와야함

명령어들은 개행으로 구분되어야 함

파라미터 입력이 안되면 아무것도 출력이 되면 안됨

에러가 나면 Error 문구가 출력되어야 함. (성분이 int가 아님, int 범위를 넘음, 중복 값이 존재함)

 

Mandatory

데이터가 3개인 경우

3개의 데이터를 뽑아서 6가지 케이스를 결정한다.

i < j < x 이면 상관이 없다.

x < i < j 인 경우

 

 

Bonus

규칙

checker 이라는 이름의 프로그램을 만드시오. 정수로 채워진 스택. 성분이 없으면 멈추기

standard input으로 명령을 읽어들이기. 모든 명령을 읽어들였으면 스택에서 해당 명령순으로 수행하기

정렬이 끝나면 a 스택은 차있고 b 스택은 비어있기. OK를 디스플레이에 띄워주기

그외의 경우는 모두 KO를 띄워주기

에러에 대해서는 Error라고 띄워주기

728x90

'Others > 42Seoul' 카테고리의 다른 글

철학자 문제  (0) 2022.05.06
push_swap  (0) 2022.03.11
Alumni Board 만들기  (0) 2022.02.18
[42] minitalk_2022 코드 복기  (0) 2022.02.17
BLIND CLONE CODING 4일차  (0) 2022.01.30