본문 바로가기

push_swap

[42 서울] push_swap을 케이크처럼 쉽게 먹는 법 - 2 서론 어제 평가를 받았다. 역시 글을 쓰기전에 평가를 받으면 평가때 말을 하면서 머리속이 정리되서 글이 더 쉽게 나오는것 같다. 이전 글에도 적혀있지만 코드의 진행은 이 영상과 같다 https://youtu.be/8h7a7NxztkM 구현 시작 2개일때와 3개일때의 정렬은 별로 어렵지 않다. 2개일때는 그냥 둘중에 뭐가 더 높은 수인지를 확인해서 sa를 하거나 안하면 되고 3개일때는 경우의 수가 다섯가지이기 때문에 전체를 하드코딩하면 된다. 이제 3 보다 많은 숫자들을 정렬하기 위해서는 정렬 알고리즘이 필요하다. 우선 정렬이 시작되면 모든 수를 3등분 한다. 위에서 적힌 방법대로 나누면 왼쪽과 같은 모습이 된다. 이걸 이제 전부 스택b로 넘기면 오른쪽같은 사진이 된다. 전부 넘긴다고 했지만 실제 코드에서.. 더보기
[42 서울] push_swap을 케이크처럼 쉽게 먹는 법 - 1 서론 push_swap은 42서울 2서클 과제로 2서클 과제 중 가장 난이도가 높은 것으로 알려져 있다. 책 개구리를 먹어라! 의 교훈대로 2서클에서 가장 어려운 과제를 먼저 잡았다. 과제의 내용은 인자의 숫자들을 스택 두 개에 제한된 명령어를 최대한 적게 사용해서 정렬하는 과제이다. 이를 위해 다양한 알고리즘을 공부하고 고민하며 해결 방법을 찾아서 구현해야 한다. 이 글은 두 편으로 나눠서 1편에서는 알고리즘 구현 전까지, 2편에서는 알고리즘에 대한 얘기를 할 것이다. 다만 처음에 알고리즘을 생각해서 풀었다가 만점을 받기 위한 최적화가 난해해서(인자가 100개일 때 만점이 나오지 않았다), 갈아엎고 과제를 통과하기 위한 코드로 다시 짰다. 그러다 보니 이 글을 보고 구현하면 이 과제에서 학습할 수 있는.. 더보기