스택 a에는 중복되지 않는 랜덤 개수의 숫자
스택 b는 빈 스택
스택 a를 오름차순으로 정렬
sa
: a의 맨 위 2개 요소를 스왑sb
: b의 맨 위 2개 요소를 스왑ss
: sa
와 sb
동시에 실행pa
: b의 맨 위 요소를 a의 맨 위에 푸시pb
: b의 맨 위 요소를 a의 맨 위에 푸시ra
: a의 모든 요소를 한 칸씩 위로 밀어올림rb
: b의 모든 요소를 한 칸씩 위로 밀어올림rr
: ra
와 rb
를 동시에 실행rra
: a의 모든 요소를 한 칸씩 아래로 밀어내림rrb
: b의 모든 요소를 한 칸씩 아래로 밀어내림rrr
: rra
와 rrb
를 동시에 실행\n
으로 구분하여 콘솔에 출력Error\n
를 stderr에 표시"123 3 0" 2 5
pb
, 아니면 ra
pb
후 b 안에서 작은 피봇보다 큰 값은 rb
rb
한 만큼 rrb
해서 작은 피봇보다 큰 값을 위로 올리기 (100개 이하에서는 이 과정 생략)(100개 이하인 경우 바로 b에서 가장 큰 값을 찾아서 rb
또는 rrb
후 pa
로 모두 옮기고 끝냄)
1. 1차 정렬의 각 3등분 과정에서 작은 피봇보다 큰 수들에 대해 3등분 정렬 (rb
rrb
pa
)
2. b에는 2차 정렬 후 가장 작은 값만 남으므로 그만큼의 수를 pa
(이때 한 덩어리의 크기가 100보다 크면 2번 없이 3개 이하로 남을 때까지 반복 3등분)
3. 남은 3개 이하의 값을 pa
로 다 꺼냄
👉 반복 후 모든 값은 a에 대충 오름차순으로 쌓임
ra
또는 rra
한 뒤 pb
pa
3
: 3회5
: 12회100
: 700 / 900 / 1100 / 1300 / 1500500
: 5500 / 7000 / 8500 / 10000 / 11500100개, 500개 테스트 점수를 더해서 6점 이상이어야 통과
터미널 난수 생성
ruby -e "puts (1..500).to_a.shuffle.join(' ')"
https://www.notion.so/push_swap-c15e62229b9541d78fadec4d6aae8b50
push_swap 비주얼라이저
테스터