[조범근의 IT 칼럼] 스택 알고리즘에 주목하라

 

IT 와 관련된 지식의 양 및 수준이 높아지고 이에 대한 관심도가 증가하면서 알고리즘이라는 것 또한 사람들에게 주목받고 있다. 우리들의 삶에 꽤 많은 영향력을 행사하고 있는 각종 미디어, 그중에서 유튜브 알고리즘 같은 단어들을 사람들에게로 하여금 알고리즘이라는 것에 대하여 호기심을 불러일으키고 있다. 나 또한 알고리즘에 지대한 관심이 있는 사람으로서 오늘은 알고리즘 중 이해하기 어렵지 않은 스택 알고리즘에 대하여 조사해보고 싶은 욕망이 생겼기에 이 칼럼을 작성하게 되었다.

 

스택 알고리즘에서의 스택이란 컴퓨터에서 정말 많이 사용되는 자료구조 중 하나이다. 스택의 특징으로는 한쪽 끝에서만 데이터를 투입하거나 뺄 수 있는 구조로 되어있다는 것이다.  따라서 우리가 스택에 대하여 이해할 때에 쌓여있는 책 같은 물건들 정도로 이해하면 이해하기 더 수월해질 수 있다.1 만약 창고에 쌓여있는 책들을 꺼내고 싶을 때 가장 아래 있는 책을 꺼내려 한다면 위에 있는 책들을 치우고 아래 있는 책을 건드리면서 꺼내야 하기 때문이다.  

 

스택에 대한 몇 가지의 예시를 들어보자.2 첫째로, 스마트폰에서 뒤로 가기 키를 누르면 현재 실행되고 있는 앱이 종료되며, 그 이전에 실행되던 앱이 나타난다. 다음으로는, 컴파일러 속에서 괄호 사용 같은 에러들을 검토할 때에 사용된다. 괄호의 종류로는 대괄호, 중괄호, 소괄호 등이 있으며, 코드상에서 괄호들의 구조는 두 괄호 사이의 거리가 가까운 것들끼리 서로 쌍을 이루는 특징을 갖고 있어서 스택을 활용하여 왼쪽 괄호들을 만나면 계속 데이터를 저장하고 그 후에 오른쪽 괄호들이 등장하게 될 때 스택에서 가장 최근의 저장한 왼쪽 괄호를 꺼내어 괄호들의 종류는 대조 시켜 쉽게 괄호에 대한 오류를 검출해 낼 수 있다. 

 

또한, 스택 알고리즘에서는 몇 가지 조건이 존재한다. 먼저 후입선출 (LIFO: Last-In First-Out)이라는 조건이다.3 이 조건은 말 그대로 가장 먼저 들어오게 된 데이터가 가장 위쪽에 자리 잡게 되고, 가장 먼저 나가게 된다. 또한 스택의 입과 출력은 맨 위에서만 일어난다. 또한 스택의 가운데에서는 데이터를 수정할 수 없으며 스택을 구현하는 방법으로는 연결 리스트를 이용하는 방법이나 배열을 활용하는 방법이 존재한다. 연결 리스트를 이용하는 방법은 만들어내기는 조금 어려울 수는 있지만, 스택의 크기를 필요하다면 마음대로 크기 같은 것들을 조정할 수 있는 장점이 있다. 배열을 이용한 방법은 만들어내기 쉽고 성능이 우수하지만, 스택의 크기가 고정되는 단점이 있다. 

 

IT 와 관련된 지식에 대하여 관심이 많은 나로서는 이런 스택 알고리즘에 대하여 조사해봄으로써 내가 취해야 할 태도에 대하여 생각해보았다. 먼저 알고리즘이란 것에 대하여 두려움을 가지지 않는 것이다. 알고리즘, 요즘 들어 계속해서 대두되고 있는 단어 중 하나로 아랍의 수학자의 이름에서 유래된 단어이다.4 어떠한 주어진 문제를 풀기 위한 절차나 방법을 말하는데 우리는 알고리즘이란 단어에 생소하기 때문에 거부감이나 두려움을 가질 필요가 전혀 없다고 생각한다. 알고리즘은 그저 한 단어일 뿐 이를 풀어 해석한다면 얼마든지 친숙해질 수 있다. 나 또한 스택 알고리즘에 대하여 조사하는 과정에서 두려움보단 오히려 흥미와 호기심을 느끼기도 하였다. 앞으로도 여러 분야에서 알고리즘과 관련되어 계속해서 발전해나갈 것이며 알고리즘이란 것이 익숙해지고 있는 사회에서 우리는 두려움을 가지지 말고 이를 탐구하며 살아갈 필요가 있다.

 

각주

(1. 참고 https://velog.io/@sangh00n/%EC%8A%A4%ED%83%9Dstack%EC%9D%98-%EC%9D%B4%ED%95%B4)

(2. 참고 https://orcacode.tistory.com/entry/스택-Stack-자료를-차곡차곡-쌓아-올려라)
(3. 참고 https://blog.naver.com/hodu0622/222188049784)

(4. 참고 https://terms.naver.com/entry.naver?docId=15454&cid=43659&categoryId=43659)

 

 

이 기사 친구들에게 공유하기