Algorithm/BAEKJOON
[백준] 9012번 괄호 파이썬
깡뇽
2022. 3. 21. 23:18
반응형
자료구조에 있는 문제를 풀어보았다.
원래는 replit이라는 웹 IDE를 사용했었는데 가끔씩 오류가 나곤 했었다. 그래도 참고 사용했지만...
결국 오늘 GitHub에 Codingtest 이름의 repository를 만들었다.
Pycharm에서 앞으로 문제를 풀고 GitHub에 올리려고 한다...!
9012번 괄호 풀이
[시도1] 맞았습니다!!
n = int(input())
for _ in range(n):
line = input()
stack = []
for i in line:
if i == '(':
stack.append('(')
elif i == ')':
if len(stack) == 0:
stack.append(')')
break
else:
stack.pop()
if len(stack) != 0:
print('NO')
else:
print('YES')
유형이 자료 구조에 속한 문제였어서 어떤 자료 구조를 사용해야하나 고민하다가 stack을 선택했다.
사실 굳이 자료 구조를 사용하지 않고 cnt와 같은 카운트 변수를 두고 변화를 확인해도 된다.
나는 stack이라는 이름의 리스트에 ( 가 입력되면 append로 추가를 하고, ) 가 입력되면 stack에 있던 ( 를 pop하여 꺼내준다. 단, ) 가 들어왔을 때 stack에 꺼낼 ( 가 있어야 하는데 없다면 짝이 맞지 않는 것이므로 ) 를 추가한 뒤에 break를 하여 반복문을 멈춘다. 여기서 ) 를 추가하는 것이 아니라 사실 아무거나 추가해도 된다. 그 이유는 마지막에 결국 stack의 길이가 0이 아닐 때에 NO를 출력하므로 아무거나 넣어서 stack의 길이가 0이 아니게 만들면 된다. stack의 길이가 0이면 ( 와 ) 가 짝이 맞다는 것이므로 YES를 출력한다.
어려운 문제는 아니지만 if문을 처리하면서 조금 헛다리를 짚어서 돌아돌아 풀 수 있었다.
반응형