[๋ฐฑ์ค€] ๊ด„ํ˜ธ์˜ ๊ฐ’ / 2504๋ฒˆ / ํŒŒ์ด์ฌ / Python / Stack ์ž๋ฃŒ๊ตฌ์กฐ
Algorithm/Baekjoon

[๋ฐฑ์ค€] ๊ด„ํ˜ธ์˜ ๊ฐ’ / 2504๋ฒˆ / ํŒŒ์ด์ฌ / Python / Stack ์ž๋ฃŒ๊ตฌ์กฐ

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’กsolutions )

๐Ÿ’ฌ ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๊ตฌํ˜„ ๋ฌธ์ œ๋กœ ์ž๋ฃŒ ๊ตฌ์กฐ ์Šคํƒ(stack)์„ ํ™œ์šฉํ•ด์„œ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

๐Ÿ’ฌ ์ฒซ ๋ฒˆ์งธ if ์กฐ๊ฑด๋ฌธ์€ ์ž…๋ ฅ๊ฐ’์ด ')' ๋˜๋Š” ']'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ->  ์˜ฌ๋ฐ”๋ฅด์ง€ ๋ชปํ•œ ๊ด„ํ˜ธ์—ด๋กœ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ์— ์ด ์กฐ๊ฑด๋ฌธ์„ ๋‹ฌ์ง€ ์•Š์•„์„œ ์ฑ„์  ์ค‘๊ฐ„์— ์‹คํŒจํ–ˆ๋‹ค.

๐Ÿ’ฌ sys๋ชจ๋“ˆ์˜ exit()๋Š” ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒํ•จ์ˆ˜์ด๋‹ค. -> ๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅด์ง€ ๋ชปํ•œ ๊ด„ํ˜ธ์—ด์ผ ๋•Œ๋Š” print(0)์„ ํ•ด์ฃผ๊ณ  exit(0)๋กœ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ”๋กœ ์ข…๋ฃŒํ•œ๋‹ค. 

โœ” sys๋ชจ๋“ˆ์˜ exit() ์ข…๋ฃŒํ•จ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช… ๐Ÿ‘‡
์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ

๐Ÿ’ฌ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์•˜์œผ๋‚˜, ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ๋•Œ ์–ด๋ ค์›€์„ ๋Š๊ผˆ๋‹ค.  ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ ์ด์ „์— stack ๋งจ ๋(top)์— ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋”ํ•˜์—ฌ tmp๊ฐ’์— ์ €์žฅํ•œ๋‹ค. -> ๊ด„ํ˜ธ์— ๋”ฐ๋ผ tmp์— ๊ณฑํ•˜๊ธฐ 2, ๊ณฑํ•˜๊ธฐ 3์„ ํ•ด์ค€ ๊ฐ’์„ ๋‹ค์‹œ stack์— ๋„ฃ๋Š”๋‹ค.

๐Ÿ’ฌ ๋งˆ์ง€๋ง‰ try๋ฌธ์—์„œ sum์„ ๊ตฌํ•˜๋Š”๋ฐ stack์— ๊ด„ํ˜ธ๊ฐ€ ์•„์ง ๋‚จ์•„ ์žˆ๋‹ค๋ฉด ์˜ฌ๋ฐ”๋ฅด์ง€ ๋ชปํ•œ ๊ด„ํ˜ธ์—ด์ด๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ธฐ๋•Œ๋ฌธ์— except๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค.

 

๐Ÿ‘จ‍๐Ÿ’ปcode )

brackets = input()
s = []
chk = 0
for i in brackets:
    if not s:
        if i in [')', ']']:
            print(0)
            exit(0)
            
    if i == ')':
        tmp = 0
        while s:
            top = s.pop()
            if top == '(':
                if tmp == 0:
                    s.append(2)
                else:
                    s.append(tmp*2)
                break
            elif top == '[':
                print(0)
                exit(0)
            else:
                tmp += int(top)
        
    elif i == ']':
        tmp = 0
        while s:
            top = s.pop()
            if top == '[':
                if tmp == 0:
                    s.append(3)
                else:
                    s.append(tmp*3)
                break
            elif top == '(':
                print(0)
                exit(0)
            else:
                tmp += int(top)
                
    else:
        s.append(i)

try:
    print(sum(s))
except:
    print(0)

 

 

๐Ÿ“Œdescription )

 

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

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

www.acmicpc.net


๋ฌธ์ œ

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

  1. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ‘()’์™€ ‘[]’๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋‹ค. 
  2. ๋งŒ์ผ X๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ฉด ‘(X)’์ด๋‚˜ ‘[X]’๋„ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด ๋œ๋‹ค. 
  3. X์™€ Y ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ผ๋ฉด ์ด๋“ค์„ ๊ฒฐํ•ฉํ•œ XY๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด ๋œ๋‹ค.

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

  1. ‘()’ ์ธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์€ 2์ด๋‹ค.
  2. ‘[]’ ์ธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์€ 3์ด๋‹ค.
  3. ‘(X)’ ์˜ ๊ด„ํ˜ธ๊ฐ’์€ 2×๊ฐ’(X) ์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
  4. ‘[X]’ ์˜ ๊ด„ํ˜ธ๊ฐ’์€ 3×๊ฐ’(X) ์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
  5. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด X์™€ Y๊ฐ€ ๊ฒฐํ•ฉ๋œ XY์˜ ๊ด„ํ˜ธ๊ฐ’์€ ๊ฐ’(XY)= ๊ฐ’(X)+๊ฐ’(Y) ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ‘(()[[]])([])’ ์˜ ๊ด„ํ˜ธ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž. ‘()[[]]’ ์˜ ๊ด„ํ˜ธ๊ฐ’์ด 2 + 3×3=11 ์ด๋ฏ€๋กœ ‘(()[[]])’์˜ ๊ด„ํ˜ธ๊ฐ’์€ 2×11=22 ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ‘([])’์˜ ๊ฐ’์€ 2×3=6 ์ด๋ฏ€๋กœ ์ „์ฒด ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์€ 22 + 6 = 28 ์ด๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ํ’€์–ด์•ผ ํ•  ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ์—ด์„ ์ฝ๊ณ  ๊ทธ ๊ด„ํ˜ธ๊ฐ’์„ ์•ž์—์„œ ์ •์˜ํ•œ๋Œ€๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๊ด„ํ˜ธ์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด(์ŠคํŠธ๋ง)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ ๊ทธ ๊ธธ์ด๋Š” 1 ์ด์ƒ, 30 ์ดํ•˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ทธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์ผ ์ž…๋ ฅ์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ๋ชปํ•œ ๊ด„ํ˜ธ์—ด์ด๋ฉด ๋ฐ˜๋“œ์‹œ 0์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. 




๋ฐ˜์‘ํ˜•