[백준/파이썬] 10799번

민정·2023년 7월 31일
0

[백준/파이썬]

목록 보기
156/245
post-thumbnail

📍백준 10799번 문제

https://www.acmicpc.net/problem/10799

코드

import sys
input = sys.stdin.readline

bar = input().rstrip('\n')
res = 0
temp = []

for i in range(len(bar)):
    if bar[i] == '(':
        temp.append('(')
    elif bar[i] == ')':
        if bar[i-1] == '(':
            temp.pop()
            res += len(temp)
        else:
            temp.pop()
            res += 1
print(res)

풀이

와 진짜 문제 푸는 방법이 생각치도 못해서 놀랐다...
만약 값이 '('이라면, 값을 더해준다.
')'이라면, 이전의 값이 '('인지 ')'를 나누어 풀어주면 된다.

  • '('이라면 하나의 ()가 완성된 것이므로 temp에 있는 값 - 1을 해줘서 더해주면 된다. 왜냐하면, ((((()의 경우 나올 수 있는 조각 수가 4개이기 때문에 최종값 += (총 길이 - 1) 을 해주면 된다.
  • ')'이라면 마지막이라는 의미이므로 1조각만 나올 수 있다. 최종값에서 + 1을 해주면 된다.
profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글