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

λ°˜μ‘ν˜•