[42-Seoul/push_swap] 프로젝트 소개

yebeen·2022년 8월 8일
0

42-Seoul/push_swap

목록 보기
1/2
post-thumbnail

push_swap

스택 a를 오름차순으로 정렬해야합니다. 가장 작은 명령어 목록을 표시해야 하며 가장 작은 숫자가 맨 위에 표시됩니다.


rules

  • 이름이 a, b인 스택 2개가 있습니다.
  • 스택 a에는 중복 없는 임의의 양의 음소 또는 양수가 포함됩니다.
  • 스택 b는 비어있습니다.
  • 매개변수가 지정되지 않은 경우 프로그램은 아무 것도 표시하지 않고 프롬프트를 다시 제공해야 합니다.
  • 오류의 경우 표준 오류에 '\n'이 뒤에 오는 "Error"를 표시해야 합니다.
  • 오류는 정수가 아니거나, interger 범위를 넘거나, 중복이 있을 경우 등이 있습니다.
commandintroduce
sa (swap a)스택 a의 맨 위에 있는 처음 2개의 요소를 바꿉니다. (요소가 하나만 있거나 없는 경우 아무 작업도 수행하지 않습니다.)
sb (swap b)스택 b의 맨 위에 있는 처음 2개의 요소를 바꿉니다. (요소가 하나만 있거나 없는 경우 아무 작업도 수행하지 않습니다.)
ss (sa && sb)sa와 sb를 한번에 수행합니다.
pa (push a)b 맨 위에 있는 첫 번째 요소를 가져와서 a 맨 위에 놓습니다. b가 비어있으면 아무것도 하지 않습니다.
pb (push b)a 맨 위에 있는 첫 번째 요소를 가져와서 b 맨 위에 놓습니다. a가 비어있으면 아무것도 하지 않습니다.
ra (ratate a)스택 a의 모든 요소를 1만큼 위로 이동합니다. 첫 번째 요소가 마지막 요소가 됩니다.
rb (ratate b)스택 b의 모든 요소를 1만큼 위로 이동합니다. 첫 번째 요소가 마지막 요소가 됩니다.
rr (ra && rb)ra와 rb를 한번에 수행합니다.
rra
(revers-ratate a)
스택 a의 모든 요소를 1만큼 아래로 이동합니다. 마지막 요소가 첫 번째 요소가 됩니다.
rrb
(revers-ratate b)
스택 b의 모든 요소를 1만큼 아래로 이동합니다. 마지막 요소가 첫 번째 요소가 됩니다.
rrr (rra && rrb)rra와 rrb를 한번에 수행합니다.

example

$>./push_swap 2 1 3 6 5 8
sa
pb
pb
pb
sa
pa
pa
pa
$>./push_swap 0 one 2 3
Error
$>
  • 제공되는 checker를 이용해 값을 확인할 수 있습니다.
$>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
$>

chekcer

작성한 코드를 바탕으로 cheker를 만들어 push_swap이 생성한 명령어 목록이 실제로 스택을 제대로 정렬하는지 확인할 수 있습니다.


example

$>./checker 3 2 1 0
rra
pb
sa
rra
pa
OK
$>./checker 3 2 1 0
sa
rra
pb
KO
$>./checker 3 2 one 0
Error
$>./checker "" 1
Error
$>
profile
🐣🐥

0개의 댓글