๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] 2504๋ฒˆ_๊ด„ํ˜ธ์˜ ๊ฐ’

Dbswnstjd 2023. 2. 8. 21:02

๋ฌธ์ œ

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

 

2504๋ฒˆ: ๊ด„ํ˜ธ์˜ ๊ฐ’

4๊ฐœ์˜ ๊ธฐํ˜ธ ‘(’, ‘)’, ‘[’, ‘]’๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ด„ํ˜ธ์—ด ์ค‘์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ž€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ‘()’์™€ ‘[]’๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋‹ค. ๋งŒ์ผ X

www.acmicpc.net

 

ํ’€์ด

# ๋ฐฑ์ค€ 2504๋ฒˆ ๋ฌธ์ œ - ๊ด„ํ˜ธ์˜ ๊ฐ’
bracket = list(input())

stack = []
answer = 0
tmp = 1

for i in range(len(bracket)):
    if bracket[i] == '(':
        stack.append(bracket[i])
        tmp *= 2
    
    elif bracket[i] == '[':
        stack.append(bracket[i])
        tmp *= 3
    
    elif bracket[i] == ')':
        if not stack or stack[-1] == '[':
            answer = 0
            break
        if bracket[i-1] == '(':
            answer += tmp
        stack.pop()
        tmp //= 2
    
    else:
        if not stack or stack[-1] == '(':
            answer = 0
            break
        if bracket[i-1] == '[':
            answer += tmp
        
        stack.pop()
        tmp //= 3

if stack:
    print(0)
else:
    print(answer)