본문 바로가기

프로그래밍116

[백준/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.
[백준/C,C++] 10828번: 스택 www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 간단히 스택을 구현하는 문제입니다. 그렇게 어렵지 않은 문제라 생각하고 빨리 풀 줄 알았으나.. 예제 입력을 받을 때 문자열 입력 관련하여 신경 쓸 부분이 많아 오래 걸렸습니다.. ㅜㅜ 문제를 풀고 난 후 고수 개발자님의 코드를 참고해보니 나름 해결했다고 한 것도 결국엔 삽질한 것 같습니다만 해당 과정을 자세히 포스팅해보겠습니다. 아래는 제출한 코드입니다. #include #include us.. 2021. 3. 1.