본문 바로가기

스택

C++ 스택을 사용한 괄호 짝 맞추기(Balanced brackets) 괄호 짝 맞추기(Balanced brackets)는 여는 괄호와 닫는 괄호의 짝이 맞는지 확인하는 문제입니다. 가장 나중에 열렸던 괄호 타입이 가장 먼저 닫혀야 됩니다. 이런 특성은 스택(Stack) 자료형을 활용하면 쉽게 구현이 가능합니다. 여는 괄호는 모두 스택에 넣고 닫는 괄호가 나올 때 스택의 최상단(Top)에 위치한 여는 괄호와 비교합니다. 그리고 닫는 괄호가 나왔을 때 스택이 비어 있으면 잘못된 짝으로 구성된 것입니다. 모든 문자를 비교한 이후에 스택이 깔끔하게 비었으면 완전한 괄호 짝이 맞는 문자열이 됩니다. 전체적인 코드는 다음과 같습니다. 30줄 남짓의 코드로 쉽게 구현이 가능합니다. 추가로 브라켓을 추가해야 하는 경우 map 타입의 pairs에 여는 괄호와 닫는 괄호 쌍을 입력해주면 됩.. 더보기
2개의 스택(Stack)으로 큐(Queue) 구현하기 스택(Stack)과 큐(Queue)는 대표적인 자료구조 중 하나입니다.스택은 후입선출(Last In First Out) 방식이며 큐는 선입선출(First In First Out) 방식입니다.일반적으로 스택은 접시 쌓기로 비유하고 큐는 은행 등의 대기열에 비유됩니다.스택과 큐는 다음과 같은 방향으로 데이터를 입력하고 출력합니다.스택은 1 -> 2 -> 3 -> 4 순서로 넣고 4 -> 3 -> 2 -> 1의 순서로 꺼낼 수 있습니다.큐는 1 -> 2 -> 3 -> 4 순서로 넣고 1 -> 2 -> 3 -> 4의 동일한 순서로 꺼낼 수 있습니다.꺼낼 때의 순서가 완전히 반대인 것을 확인할 수 있습니다.2개의 스택으로 큐를 구현하는 것은 면접 등에서 자주 볼 수 있는 알고리즘 문제 중 하나입니다.스택에 입력했.. 더보기