스택을 활용한 풀이
(
나[
면 스택에 넣는다.
)
일 경우
스택이 비어있고 맨 마지막 값이(
이 아니면 올바른 문자열 이 아니므로
"no" 를 반환한다.
]
일 경우
스택이 비어있고 맨 마지막 값이[
이 아니면 올바른 문자열 이 아니므로
"no" 를 반환한다.반복문을 끝나고 나서라도 스택에 값이 존재할 수도 있다.
Ex) ([[(
따라서 스택이 비어있는 경우만 "yes", 아니면 "no" 를 반환한다.
import sys data = sys.stdin.read() def check(line): stack = [] for char in line: if char == "(" or char == "[": stack.append(char) elif char == ")": if not stack or stack[-1] != "(": return "no" stack.pop() elif char == "]": if not stack or stack[-1] != "[": return "no" stack.pop() return "yes" if not stack else "no" def solution(data): data_lines = data.rstrip().split("\n") for i in range(len(data_lines) - 1): print(check(data_lines[i])) return solution(data)
처음 solution에서 한줄씩 받아오는 코드를 다음과 같이 작성했다.
data_lines = data.split("\n")
이거 때문에 계속 틀렸다고 나왔었다.
strip() 을 반드시 사용하자..