๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1662_์••์ถ•

๋ฟŒ์•ผ._. 2021. 10. 10. 15:55

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1662)

<์••์ถ•>

๋ฌธ์ œ 

 

์••์ถ•๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์ค‘ ์–ด๋–ค ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์€ K(Q)์™€ ๊ฐ™์ด ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
K๋Š” ํ•œ์ž๋ฆฌ ์ •์ˆ˜์ด๊ณ , Q๋Š” 0์ž๋ฆฌ ์ด์ƒ์˜ ๋ฌธ์ž์—ด์ด๋‹ค. ์ด Q๋ผ๋Š” ๋ฌธ์ž์—ด์ด K๋ฒˆ ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.
์••์ถ•๋œ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์„ ๋‹ค์‹œ ์••์ถ•์„ ํ‘ธ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— ์••์ถ•๋œ ๋ฌธ์ž์—ด S๊ฐ€ ๋“ค์–ด์˜จ๋‹ค. S์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 50์ด๋‹ค. ๋ฌธ์ž์—ด์€ (, ), 0-9 ์‚ฌ์ด์˜ ์ˆซ์ž๋กœ๋งŒ ๋“ค์–ด์˜จ๋‹ค.

 

์ถœ๋ ฅ 

 

์ฒซ์งธ ์ค„์— ์••์ถ•๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด ๊ฐ’์€ int๋ฒ”์œ„๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

import sys

if __name__=='__main__':
    line=sys.stdin.readline().strip()

    result=0 # ๊ธธ์ด
    stack=[]
    Qlen=0
    for i in line:
        if i==')': # K(Q) ๊ณ„์‚ฐ
            temp=0
            while True: # '(' ๋งŒ๋‚ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต
                if stack[-1]=='(': # ์ข…๋ฃŒ ์กฐ๊ฑด
                    stack.pop()
                    break
                x = stack.pop() # Q ๊ตฌํ•˜๊ธฐ
                if x[-1]=='-':
                    temp+=int(x[:-1]) # ์••์ถ• ํ’€์–ด์ง„ ๊ธธ์ด
                else: # ๊ธธ์ด
                    Qlen+=1
            K=stack.pop() # K
            # ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์••์ถ• ํ‘ผ ๊ธธ์ด๋ผ๋Š” ๊ฒƒ์„ '-'์ถ”๊ฐ€ํ•˜์—ฌ ํ‘œ์‹œ
            result=str(int(K)*(Qlen+temp))+'-'
            stack.append(result)
            Qlen=0
        else: # ์ถ”๊ฐ€
            stack.append(i)

    answer=0
    for i in stack:
        if i[-1]=='-': # ์••์ถ• ํ’€์–ด์ง„ ๊ธธ์ด
            answer+=int(i[:-1])
        else: # ๋ฌธ์ž์—ด
            answer+=1
    print(answer)

 

  • ')'์ผ ๋•Œ์™€ ')'์ด ์•„๋‹ ๋•Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ตฌํ˜„
  • ')'์ผ ๋•Œ: '('์ผ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต -> ์••์ถ• ํ’€์–ด์ง„ ๊ธธ์ด์™€ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•˜์—ฌ K(Q) ๊ณ„์‚ฐ ํ›„ stack ์ถ”๊ฐ€
  • ')'์•„๋‹ ๋•Œ: stack ์ถ”๊ฐ€
  • answer: stack์„ ์ˆœํšŒํ•˜๋ฉฐ ์••์ถ• ํ’€์–ด์ง„ ๊ธธ์ด๋Š” ๊ทธ ์ž์ฒด๋กœ ๋”ํ•˜๊ณ  ๋ฌธ์ž์—ด์ธ ๊ฒƒ์€ 1์„ ๋”ํ•ด์ค€๋‹ค.

์••์ถ• ํ’€์–ด์ง„ ๊ธธ์ด์™€ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•)

์••์ถ• ํ’€์–ด์ง„ ๊ธธ์ด๋Š” ์ˆซ์ž ๋’ค์— '-'๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ stack์— ๋‹ค์‹œ ์ €์žฅํ•ด์ค€๋‹ค.


์ƒ๊ฐ๐Ÿค”

 

์••์ถ• ํ‘ผ ๊ธธ์ด์™€ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—์„œ ์‚ด์ง ๊ณ ๋ฏผํ•˜์˜€๋‹ค.

์—ด์‹ฌํžˆ ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ ค๋ณธ ๊ฒฐ๊ณผ ์••์ถ• ํ‘ผ ๊ธธ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ stack์— ์ถ”๊ฐ€ํ•˜๋ฉด์„œ '-'๋ฅผ ํ•จ๊ป˜

์ถ”๊ฐ€ํ•ด๋ณด์ž๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์œ„์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

 

 ์ถœ์ œ์ž๊ฐ€ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ‘ธ๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์•˜๊ฒ ์ง€๋งŒ.. ์ด๋ ‡๊ฒŒ ํ’€์–ด๋ฒ„๋ ธ๋‹ค..๐Ÿ˜