728x90
- 스택으로 수식의 괄호쌍이 올바른지 확인하는 문제
- 문장에서 소괄호("()") 와 대괄호("[]")로 2종류가 올바르게 열리고, 닫혔는지 판단해야 함
반례모음
([(]]) no |
([)]). . no |
(())) . no |
[(()]). . no |
( no |
( . no |
풀이
- 괄호만 저장하는 스택을 만든다
- 괄호가 열릴 때, "(" or "["만 스택에 저장한다.
- 닫힘 괄호가 들어올 때, 현재 스택의 top()이 해당 괄호랑 맞는 쌍인지 판단하고, 맞으면 pop으로 지워주고, 아니면 "no"를 출력한다. 또한, 스택이 비어있는 상태(empty)일 때에도 "no" 출력.
- 문장의 마지막 "."이 들어올 때, 스택이 비어있으면 "yes" 출력. 단, 스택이 비어 있지 않으면 "no"를 출력해야 한다.
코드
getline()에 대해서 자세히 알고 싶으면 아래 링크,
https://forward-gradually.tistory.com/26
알게 된 점
- 역시 예외처리가 가장 중요..
- 스택의 활용에 대해서 알게됨
git 코드
728x90
'C++ > 백준 Etc' 카테고리의 다른 글
[c++] BFS example from 바킹독 (0) | 2023.07.24 |
---|---|
[c++] 백준 쇠막대기 (10799) (2) | 2023.07.23 |
[c++] 백준 덱(10866) (0) | 2023.07.14 |
[c++] 백준 회전하는 큐(1021) (0) | 2023.07.14 |
[c++] 백준 큐(10845) (2) | 2023.07.13 |