본문 바로가기

스택22

[백준] 9012번: 괄호 (C++) 9012번: 괄호 문제 ) 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으.. 2022. 5. 8.
[백준] 10773번: 제로 (C++) 10773번: 제로 문제 ) 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 : 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 .. 2022. 5. 8.
[백준] 10828번: 스택 (C++) 10828번: 스택 문제 ) 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 : 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크.. 2022. 5. 8.
[python] Stack과 DFS 자료 구조인 Stack과 DFS(깊이 우선 탐색)에 대해 알아보도록 하자. 1. Stack (스택) 스택(stack)은 제한적으로 접근할 수 있는 나열 구조로, 접근 방법은 항상 목록의 끝에서만 일어난다. 따라서 후입선출 (Last In First Out—LIFO)의 특성을 가지는 자료구조라고 불리운다. 이와 반대인 선입선출의 구조를 가진 queue도 존재하지만, 이번 글에서는 스택만 다루도록 한다. 스택에서는 다음과 같은 중요한 연산이 존재한다. S.size() 현재 스택에 들어있는 데이터 원소 개수를 반환한다. S.pop() 스택의 가장 윗 데이터를 반환하고, 삭제한다. S.push() 스택의 가장 윗 데이터를 추가한다. S.empty() 스택이 비었다면 1, 그렇지 않다면 0을 반환한다. S.ful.. 2022. 2. 27.