어떤 문자열 S에 앞뒤로 괄호를 추가하여 S를 올바른 괄호열로 만들고자 한다.
괄호로만 구성된 문자열 S가 주어졌을 때, S를 올바른 괄호열로 만들기 위해 앞과 뒤에 붙여할 할 괄호의 최소 개수를 출력하시오.
예를 들어, S = "((()" 인 경우에는 S="((()))"로 뒤에 2개의 괄호를 추가하면 된다.
S="()))("인 경우에는 S="((()))()"로 앞에 2개, 뒤에 1개의 괄호를 추가하면 된다.
단, 올바른 문자열을 만들 수 없는 입력은 주어지지 않는다고 가정해도 된다.
Input
첫째 줄에 괄호로만 구성된 문자열 S가 주어진다.
[1] )))()
[2] )(()
[3] ))()((
[4] )(()(()))
Output
첫째 줄에 S를 올바른 괄호열로 만들기 위해 앞뒤로 추가해야 할 괄호의 최소 개수를 출력한다.
[1] 3
[2] 2
[3] 4
[4] 1
import sys
input =sys.stdin.readline
# 뒤에 붙이는건 ")" 스택에 남아있는 갯수"("만큼 붙여주면 된다 len(stack)
# 앞에 붙이는건 "(" close를 만나면 pop을 시켜줘야 하는데 스택이 비어있으면 +1만큼 증가시켜준다
def sol(array):
cnt = 0
stack=[]
for i in range(len(array)):
if array[i]=="(":
stack.append(array[i])
else:
if len(stack)==0:
cnt+=1
else:
stack.pop()
return cnt+len(stack)
array = list(input().strip())
print(sol(array))
'Problem Solving' 카테고리의 다른 글
[Hash Table] 과일가게: 가장 많이 팔린 과일 (0) | 2022.12.13 |
---|---|
[Queue] 카드 버리기 (0) | 2022.12.13 |
[Stack] 내림차순 수열 (0) | 2022.12.13 |
[Queue] 요세푸스의 선물 (0) | 2022.12.13 |
[Stack] 주차 관리인 (0) | 2022.12.13 |