[Programmers] ๋คํธ๊ฒ์
Updated:
๋คํธ๊ฒ์
๋คํธ๊ฒ์ ์ ํด๋ฆญํ๋ฉด ๋ฐ๋ก ์ด๋ํ๋ค.
๋ถ๋ช ํ Level 1 ์ง๋ฆฌ ๋ฌธ์ ๋ก ๋์ด์๋๋ฐ ์ ๋ง ์ ๋ง ํ๋ค๊ฒ ํ์๋ค..
์ฒด๊ฐ์ Level 3 ์ง๋ฆฌ ์ธ ์ค..
์ฐ์ ํ๋ค๊ฐ ํํธ๋ฅผ ํ ๊ฐ ๊ฐ์ง๊ณ ์์ํ๋ค.. ์ฒ์์ ๋คํธ ๊ธฐ๋ก์ ๋ถ๋ฆฌํ ๋ 10์ ๊ตฌ๋ณํ๊ธฐ๊ฐ ๊ต์ฅํ ๊น๋ค๋ก์ ๋๋ฐ
replace ๋ฅผ ํตํด 10์ k๋ก ์นํ ํ๊ณ ์์ํ๋ค.
ํ์ด๋ฐฉ๋ฒ์ ๋ฌธ์์ด ํ๋๋ก ๋์ด์๋ ๋คํธ ๊ธฐ๋ก์ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋ ๋ค ๊ฐ์ ๊ธฐ์ค์ ๋ง๊ฒ ๊ณ์ฐ์ ํด ์ ์๋ฅผ ๊ตฌํ ํ ๋ค ๋ํด์คฌ๋ค.
def solution(dartResult):
answer = 0
checkNum = ['0','1','2','3','4','5','6','7','8','9','k']
dartList = []
dartScore = []
dartResult = dartResult.replace('10', 'k')
while len(dartResult) > 3: # dart ๋ช
๋ น ๋ถ๋ฆฌ
orderCount = 0
for index in range(1, len(dartResult)):
if dartResult[index] not in checkNum:
orderCount += 1
else:
break
dartList.append(dartResult[:orderCount+1])
dartResult = dartResult.replace(dartResult[:orderCount+1],'')
dartList.append(dartResult)
for i in range(3):
for j in range(len(dartList[i])):
if dartList[i][j] in checkNum:
try:
dartScore.append(int(dartList[i][j]))
except:
dartScore.append(10)
elif dartList[i][j] == 'D':
dartScore[i] = dartScore[i] ** 2
elif dartList[i][j] == 'T':
dartScore[i] = dartScore[i] ** 3
elif dartList[i][j] == '*':
dartScore[i] *= 2
if i != 0:
dartScore[i-1] *= 2
elif dartList[i][j] == '#':
dartScore[i] *= -1
return sum(dartScore)
์ฒ์์ ํ์ด์ฌ์ case ๋ช ๋ น์ด ์์ด ์ ์๋ฅผ ์ ๋ถ if ๋ฌธ์ผ๋ก ๋ฌถ์ด์ผ ํ๋ ์๊ฐ์ ํ๋๋ฐ
๋ฏธ๋ฆฌ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๋๊ณ ๊ทธ ์์ ์๋ค๋ฉด int ํ์ผ๋ก ๋ฐ๊ฟ ๊ณ์ฐ์ ํ๋ ์์ผ๋ก ๋ฐ๊พธ์๋ค.
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ S, D, T ์ธ ๊ฒฝ์ฐ ๊ฐ์ ์ ๊ณฑ, ์ธ์ ๊ณฑ์ ํด์ฃผ์๋๋ฐ
๋ค๋ฅธ ์ฌ๋ ์ฝ๋๋ฅผ ๋ณด๋ S, D, T ๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฌถ์ด index ๋ฅผ ํ์ฉํด ์ ๊ณฑ, ์ธ์ ๊ณฑ์ ํด์ฃผ์๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ๋ elif ๋ ๊ฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ elif ํ ๊ฐ๋ก ์ค์ผ ์ ์๋ค..
์ง์ง ์๋ฆ๋์๋ค.
Leave a comment