Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 2504. ๊ด„ํ˜ธ์˜ ๊ฐ’

deo2kim 2020. 10. 13. 20:03
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • S2 | ์Šคํƒ, ์ž๋ฃŒ๊ตฌ์กฐ, ๊ตฌํ˜„, ์žฌ๊ท€

๊ด„ํ˜ธ๋ฌธ์ œ๋Š” ํ•ญ์ƒ ์Šคํƒ์œผ๋กœ ํ’€์—ˆ๋‹ค.

  • ๋จผ์ € ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ์ฒดํฌํ•˜์ž! ๊ทธ ๋‹ค์Œ
  • ์Šคํƒ์„ ์ด์šฉํ•ด ๊ด„ํ˜ธ ์ง์„ ๋งž์ถ”๋ฉด์„œ ()์ผ ๋•Œ 2, []์ผ ๋•Œ 3์„ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.
  • ๋งŒ์•ฝ ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰์— ์ˆซ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ณฑํ•ด์ค€๋‹ค.
  • ๋งŒ์•ฝ ์Šคํƒ์— ์ˆซ์ž๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์—ด๋˜๋ฉด ๋”ํ•ด์ค€๋‹ค.

 

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

def is_right(s):
    stack = []
    for ss in s:
        if ss == '(':
            stack.append(ss)
        elif ss == ')':
            if stack and stack[-1] == '(':
                stack.pop()
            else:
                return False
        elif ss == '[':
            stack.append(ss)
        elif ss == ']':
            if stack and stack[-1] == '[':
                stack.pop()
            else:
                return False
    if stack:
        return False
    return True


def my_stack(s):
    stack = []
    for c in s:
        print(stack)

        if c == '(':
            stack.append(c)
        elif c == '[':
            stack.append(c)
        elif c == ')':
            tmp = 2
            while True:
                t = stack.pop()
                if type(t) == int:
                    tmp *= t
                elif t == '(':
                    stack.append(tmp)
                    break
        elif c == ']':
            tmp = 3
            while True:
                t = stack.pop()
                if type(t) == int:
                    tmp *= t
                elif t == '[':
                    stack.append(tmp)
                    break
        tmp = 0
        while stack:
            t = stack.pop()
            if type(t) == int:
                tmp += t
            else:
                stack.append(t)
                break
        if tmp:
            stack.append(tmp)


    return stack[-1]


S = input()
if is_right(S):
    print(my_stack(S))
else:
    print(0)

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/2504

 

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

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

www.acmicpc.net

๋ฐ˜์‘ํ˜•