이번에 진행한 과제는 알고리즘에 대해서 공부 할 수 있는 push swap이였습니다

과제의 목표는 주어진 명령어들만을 사용하여 주어진 자료구조내에서 값들을 정렬하는것입니다

알고리즘이란...?

알고리즘(영어: algorithm), 셈법은 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차이다. 계산을 실행하기 위한 단계적 절차를 의미하기도 한다. 즉, 문제 풀이에 필요한 계산절차 또는 처리과정의 순서를 뜻한다.

출처 : https://ko.wikipedia.org/wiki/알고리즘

라고 위키피디아에 적혀있네요

우리가 해야하는것은 '정렬', 정렬문제를 해결하기위한 절차들이 무엇들이 있는지 살펴보니...

선택정렬, 버블정렬, 병합정렬, 퀵정렬 등등...엄청 많았습니다

이번 과제에서 처음 알고리즘을 접하시는 분들은 '복잡도' 에 관해서 공부해보는것도 좋다고 생각합니다

알고리즘별 복잡도와 왜 그런 복잡도를 갖게되는지, 항상 그런 복잡도를 갖게되는지 등

그리고 이 복잡도를 표기할수있는 여러 방법들이 있는데 (big - o, big - Ω, big - Θ)

이중에서 가장 최악의 경우를 상정하는 big - o 표기법을 잘 살펴보시길 바랍니다

What is Big O Notation Explained: Space and Time Complexity

우리는 과제에서 스택 2개를 가지고 정렬을 하게되지만

우리가 알고있는 자료구조인 스택과는 살짝 다른 부분들이 존재합니다 (회전을 시킨다던지...최상위 값 두개를 스왑한다던지...)