본문 바로가기

알고리즘/백준93

[백준/C,C++] 1874번: 스택 수열 www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 1씩 증가하는 자연수를 푸쉬할 수 있는 스택으로 주어진 수열을 만들 수 있는가에 대한 문제입니다. 예제로 주어진 4, 3, 6, 8, 7, 5, 2, 1의 경우 1, 2, 3, 4를 차례로 push하고 pop을 2번 하면 4, 3이 출력됩니다. 이후 5, 6을 push하고 pop을 1번 하여 6을 출력, 7, 8을 push~.. .. 2021. 3. 3.
[백준/C,C++] 4949번: 균형잡힌 세상 www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 괄호 문제인 9012번 문제의 업그레이드 버전입니다. 이 문제 또한 스택으로 간단하게 풀 수 있는 문제인데요. 평소 괄호를 사용할 때 어떤 식으로 열고 닫는지 생각해보면 금방 로직을 짤 수 있습니다. 괄호를 닫을 땐 마지막에 열린 괄호와 짝이 맞아야 하며 모든 괄호는 서로 짝을 이루고 있어야 합니다. 문자열 중 '(' 또는 '['가 등장한다면 괄호를 여는 부분이므로 스택에 push를 해주고 ')'.. 2021. 3. 3.
[백준/C,C++] 9012번: 괄호 www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 흔히 쓰는 괄호가 제대로 열리고 닫혔는지 판단하는 문제입니다. '('가 push, ')'가 pop이라고 생각하면 풀기 수월한 문제입니다. 즉 스택이 비었을때 pop을 하거나 push, pop이 끝난 스택의 사이즈가 0이 아니면 vps가 아닙니다. 그것을 코드로 구현하면.. 아래와 같은 함수를 만들 수 있습니다. void vps(string str, int len) { int sta.. 2021. 3. 2.
[백준/C,C++] 10773번: 제로 www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net C++에서 제공되는 vector로 아주 쉽게 풀 수 있는 문제입니다. #include #include using namespace std; int main(void) { int k; cin >> k; vector stack; for (int i = 0; i > temp; if (temp == 0) stack.pop_back(); .. 2021. 3. 1.