๋ฌธ์ (์ถ์ฒ: 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์ ์ถ๊ฐํ๋ฉด์ '-'๋ฅผ ํจ๊ป
์ถ๊ฐํด๋ณด์๋ ์๊ฐ์ด ๋ค์ด ์์ ๊ฐ์ด ๊ตฌํํ์๋ค.
์ถ์ ์๊ฐ ์ด ๋ฐฉ๋ฒ์ผ๋ก ํธ๋ ๊ฒ์ ์ํ์ง ์์๊ฒ ์ง๋ง.. ์ด๋ ๊ฒ ํ์ด๋ฒ๋ ธ๋ค..๐
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 13417_์นด๋ ๋ฌธ์์ด (0) | 2021.10.20 |
---|---|
[Baekjoon] 11399_ATM (0) | 2021.10.20 |
[Baekjoon] 20920_์๋จ์ด ์๊ธฐ๋ ๊ดด๋ก์ (0) | 2021.10.07 |
[Baekjoon] 16922_๋ก๋ง ์ซ์ ๋ง๋ค๊ธฐ (0) | 2021.10.06 |
[Baekjoon] 1935_ํ์ ํ๊ธฐ์2 (0) | 2021.10.04 |