https://www.acmicpc.net/problem/4949
문제 풀이
1. while문을 사용하여 '.' 이 나올 때까지 입력받기
2. 한 문장 안에서 ( 나 [ 가 나올 경우 스택에 추가하기
3. ) 나 ] 가 나올 경우
3-1. 스택이 비어있지 않은 경우
- 괄호가 ) 와 ( / ] 와 [ 라면 (짝이 맞다면) 스택에서 pop()하여 요소 제거
- 맞지 않다면 제대로 되어있지 않는 괄호 상태 -> flag = False, break로 탈출
3-2. 스택이 비어있는 경우
- 닫혀있는 괄호 앞에 짝이 맞는 요소가 없음을 의미 -> flag = False, break로 탈출
4. 위 조건에서 정상적으로 수행되고(flag가 True) 이고 스택이 비어있다면(괄호들이 전부 짝에 맞게 제거) yes 출력
그렇지 않다면 no 출력
문제 코드
while True:
stack = []
flag = True
s = input()
if s == '.': break
for i in range(len(s)):
if s[i] == '(' or s[i] == '[':
stack.append(s[i])
elif s[i] == ')' or s[i] == ']':
if len(stack) != 0:
if (s[i] == ')' and stack[-1] == '(') or (s[i] == ']' and stack[-1] == '['):
stack.pop()
else:
flag = False
break
else:
flag = False
break
if flag and len(stack) == 0:
print('yes')
else:
print('no')
'Koala - 15기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 11068번 : 회문인 수 (0) | 2024.07.28 |
---|---|
[BOJ/Python3] 2630번 색종이 만들기 (0) | 2024.07.28 |
[백준/C++] 1002번: 터렛 (0) | 2024.07.27 |
[백준/C++] 17608번: 막대기 (0) | 2024.07.27 |
[백준/Python] 13410번: 거꾸로 구구단 (0) | 2024.07.27 |