๐กsolutions )
๐ฌ ๋ก์ง ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๊ตฌํํ๋ค. ๋ฌธ์์ด ์ธํธ๋ฅผ ๊ธฐํ๋ณ๋ก ๋๋๋ ๋ก์ง๊ณผ ์ ์ ๊ณ์ฐํ๋ ๋ก์ง.
๐ฌ ๋จผ์ ์ ๋ ฅ ๋ฐ์ ๋ฌธ์์ด ์ธํธ๋ฅผ ๊ธฐํ๋ณ๋ก ๋๋ ์ ๋์ ๋๋ฆฌ res์ ๋ฃ์ด์ฃผ๊ธฐ
๐ฌ ์ด๋ ์ ์๊ฐ 10์ธ ๊ฒฝ์ฐ ์ฃผ์ ->'_'๋ก ์นํํด์ ๋ฃ์ด์ฃผ๊ธฐ
๐ฌ ๋์ ๋๋ฆฌ์์ ํค, ๋ฐธ๋ฅ๊ฐ์ ๋ฝ์์์ ๊ฐ๊ฐ ์ ์, ๋ณด๋์ค, ์ต์ ๋ณ๋ก ์ ์๋ฅผ ๊ณ์ฐํด์ค ํ, ๋ค์ ๋์ ๋๋ฆฌ ์๋ ์๋ฆฌ์ ๋ฃ์ด์ฃผ๊ธฐ
๐ฌ ํฉ์ฐํด์ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด
๐ซcode )
def solution(dartResult):
answer = 0
res = {}
idx = -1
check = 1
# ๊ธฐํ๋ณ ์ ์ -> ๋์
๋๋ฆฌ์ ๊ตฌ๋ถํด ๋ฃ๊ธฐ
for i in dartResult:
if i.isdigit():
if check == 1:
idx += 1
res[idx] = ''
res[idx] += i
elif check == 0: # 10์ฒ๋ฆฌ
res[idx] = '_'
check = 0
else:
res[idx] += i
check = 1
for key, value in res.items():
tmp = 0
for i in value:
# ์ ์
if i.isdigit():
tmp = int(i)
# 10 ์ฒ๋ฆฌ
elif i == '_':
tmp = 10
# ๋ณด๋์ค
elif i == 'S':
tmp = tmp ** 1
elif i == 'D':
tmp = tmp ** 2
elif i == 'T':
tmp = tmp ** 3
# ์ต์
if i == '*':
tmp = tmp * 2
res[key] = tmp
if key != 0:
res[key - 1] = res[key - 1] * 2
break
break
elif i == '#':
res[key] = -tmp
break
res[key] = tmp
# ํฉ์ฐ
for i in res.values():
answer += i
return answer
๐ description )
๋ฌธ์ ์ถ์ฒ : programmers.co.kr/learn/courses/30/lessons/17682
๋คํธ ๊ฒ์
์นด์นด์คํก์ ๋ฌ ๋ค ๋ฒ์งธ ๋ณ! ์ฌ์ฌํ ๋? ์นด์นด์คํก ๊ฒ์๋ณ~
์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค.
๊ฐ ์ ์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์ ํต์ฌ ๋ถ๋ถ์ธ ์ ์ ๊ณ์ฐ ๋ก์ง์ ๋งก๊ฒ ๋์๋ค. ๋คํธ ๊ฒ์์ ์ ์ ๊ณ์ฐ ๋ก์ง์ ์๋์ ๊ฐ๋ค.
- ๋คํธ ๊ฒ์์ ์ด 3๋ฒ์ ๊ธฐํ๋ก ๊ตฌ์ฑ๋๋ค.
- ๊ฐ ๊ธฐํ๋ง๋ค ์ป์ ์ ์๋ ์ ์๋ 0์ ์์ 10์ ๊น์ง์ด๋ค.
- ์ ์์ ํจ๊ป Single(S), Double(D), Triple(T) ์์ญ์ด ์กด์ฌํ๊ณ ๊ฐ ์์ญ ๋น์ฒจ ์ ์ ์์์ 1์ ๊ณฑ, 2์ ๊ณฑ, 3์ ๊ณฑ (์ ์1 , ์ ์2 , ์ ์3 )์ผ๋ก ๊ณ์ฐ๋๋ค.
- ์ต์ ์ผ๋ก ์คํ์(*) , ์์ฐจ์(#)์ด ์กด์ฌํ๋ฉฐ ์คํ์(*) ๋น์ฒจ ์ ํด๋น ์ ์์ ๋ฐ๋ก ์ ์ ์ป์ ์ ์๋ฅผ ๊ฐ 2๋ฐฐ๋ก ๋ง๋ ๋ค. ์์ฐจ์(#) ๋น์ฒจ ์ ํด๋น ์ ์๋ ๋ง์ด๋์ค๋๋ค.
- ์คํ์(*)์ ์ฒซ ๋ฒ์งธ ๊ธฐํ์์๋ ๋์ฌ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์คํ์(*)์ ์ ์๋ง 2๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
- ์คํ์(*)์ ํจ๊ณผ๋ ๋ค๋ฅธ ์คํ์(*)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์คํ์(*) ์ ์๋ 4๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
- ์คํ์(*)์ ํจ๊ณผ๋ ์์ฐจ์(#)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์์ฐจ์(#)์ ์ ์๋ -2๋ฐฐ๊ฐ ๋๋ค. (์์ 5๋ฒ ์ฐธ๊ณ )
- Single(S), Double(D), Triple(T)์ ์ ์๋ง๋ค ํ๋์ฉ ์กด์ฌํ๋ค.
- ์คํ์(*), ์์ฐจ์(#)์ ์ ์๋ง๋ค ๋ ์ค ํ๋๋ง ์กด์ฌํ ์ ์์ผ๋ฉฐ, ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
0~10์ ์ ์์ ๋ฌธ์ S, D, T, *, #๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์ ๋ ฅ๋ ์ ์ด์ ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ๋ ฅ ํ์
์ ์|๋ณด๋์ค|[์ต์ ]์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด 3์ธํธ.
์) 1S2D*3T
- ์ ์๋ 0์์ 10 ์ฌ์ด์ ์ ์์ด๋ค.
- ๋ณด๋์ค๋ S, D, T ์ค ํ๋์ด๋ค.
- ์ต์ ์ *์ด๋ # ์ค ํ๋์ด๋ฉฐ, ์์ ์๋ ์๋ค.
์ถ๋ ฅ ํ์
3๋ฒ์ ๊ธฐํ์์ ์ป์ ์ ์ ํฉ๊ณ์ ํด๋นํ๋ ์ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์) 37์ ์ถ๋ ฅ ์์
์์ dartResultanswer์ค๋ช
1 1S2D*3T 37 11 * 2 + 22 * 2 + 33 2 1D2S#10S 9 12 + 21 * (-1) + 101 3 1D2S0T 3 12 + 21 + 03 4 1S*2T*3S 23 11 * 2 * 2 + 23 * 2 + 31 5 1D#2S*3S 5 12 * (-1) * 2 + 21 * 2 + 31 6 1T2D3D# -4 13 + 22 + 32 * (-1) 7 1D2S3T* 59 12 + 21 * 2 + 33 * 2