본문 바로가기
C++/백준 Etc

[c++]백준 균형잡힌 세상(4949), stack, 반례모음

by 스프링섬머 2023. 7. 14.
728x90
  • 스택으로 수식의 괄호쌍이 올바른지 확인하는 문제
  • 문장에서 소괄호("()") 와 대괄호("[]")로 2종류가 올바르게 열리고, 닫혔는지 판단해야 함

 

반례모음
([(]])

no
([)]).
.

no
(()))
.

no
[(()]).
.

no
(

no
(
.

no

 

풀이
  • 괄호만 저장하는 스택을 만든다
  • 괄호가 열릴 때, "(" or "["만 스택에 저장한다.
  • 닫힘 괄호가 들어올 때, 현재 스택의 top()이 해당 괄호랑 맞는 쌍인지 판단하고, 맞으면 pop으로 지워주고, 아니면 "no"를 출력한다. 또한, 스택이 비어있는 상태(empty)일 때에도 "no" 출력.
  • 문장의 마지막 "."이 들어올 때, 스택이 비어있으면 "yes" 출력. 단, 스택이 비어 있지 않으면 "no"를 출력해야 한다.

 

코드

 

getline()에 대해서 자세히 알고 싶으면 아래 링크,

https://forward-gradually.tistory.com/26

 

c++ cin.getline() vs getline() 및 cin.ignore() 정리

1. cin.getline(char 배열, 넣을 문자수) 넣을 문자 수만큼만 char 배열에 저장한다. 저장은 각각의 알파벳이 원소 하나하나에 할당됨. 공백도 같이 저장한다. # 넣을 문자 만큼 받는다. 2. getline(cin, string

forward-gradually.tistory.com

 

알게 된 점
  • 역시 예외처리가 가장 중요..
  • 스택의 활용에 대해서 알게됨

 

git 코드

https://github.com/intlabSeJun/c-plus-coding-test/blob/master/8.%20%EC%8A%A4%ED%83%9D%EC%9D%98%20%ED%99%9C%EC%9A%A9/%EA%B7%A0%ED%98%95%EC%9E%A1%ED%9E%8C%20%EC%84%B8%EC%83%81(4949).cpp 

 

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