https://school.programmers.co.kr/learn/courses/30/lessons/17682
def solution(dartResult):
# 우선 10점을 변경
dartResult = dartResult.replace("10","A")
result = ['10' if x=="A" else x for x in dartResult]
print(result)
# 점수
count = []
sdt = ["S", "D", "T"]
i=-1
for r in result:
if r in sdt: # s,d,t일 경우
count[i] = count[i] ** (sdt.index(r)+1)
elif r == "*": # 점수 두 배
count[i] = count[i] * 2
if i!=0 :
count[i-1] = count[i-1]*2
elif r == "#": #-1
count[i ]= count[i] * (-1)
else: # 숫자인 문자열
count.append(int(r))
i += 1
return sum(count)
function solution(dartResult) {
// SDT로 자른다.
// *는 이전과 현재 값 2배, #은 -로 변경
// *은 중첩 가능 === 4배가 됨
const darts = dartResult.match(/\d.?\D/g);
const result = []
for (let i = 0; i < darts.length; i++) {
let num = darts[i].match(/\d+/g)[0];
const bonus = darts[i].match(/(S|D|T)/g)[0];
const option = darts[i].match(/(\*|#)/g);
switch(bonus) {
case "S" :
num = Number(num);
break;
case "D" :
num = Number(num)**2;
break;
case "T" :
num = Number(num)**3;
break;
}
result[i] = num
if (option) {
switch (option[0]) {
case "*" :
result[i-1] *= 2;
result[i] *= 2;
break;
case "#" :
result[i] *= -1
break;
}
}
}
return result.reduce((a, c) => a + c, 0);
}