-
[프로그래머스] 다트 게임Engineering WIKI/Programmers 2022. 4. 11. 17:00
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
내 풀이 (실패)
def solution(dartResult): temp_answer = list() score_dic = {'S' : 1, 'D' : 2, 'T' : 3} for i, word in enumerate(dartResult): answer = 0 if word in score_dic: answer += pow(int(dartResult[i - 1]), score_dic[word]) temp_answer.append(answer) if word == "*": temp_answer[len(temp_answer) - 1] = temp_answer[len(temp_answer) - 1] * 2 temp_answer[len(temp_answer) - 2] = temp_answer[len(temp_answer) - 2] * 2 elif word == "#": temp_answer[-1] = temp_answer[-1] * -1 print(temp_answer) return sum(temp_answer)
다른 방법
def solution(dartResult): stack = [] dartResult = dartResult.replace("10", "A") bonus = {'S': 1, 'D': 2, 'T': 3} for i in dartResult: if i.isdigit() or i=='A': stack.append(10 if i == 'A' else int(i)) elif i in ('S', 'D', 'T'): num = stack.pop() stack.append(num ** bonus[i]) elif i == '#': stack[-1] *= -1 elif i == '*': num = stack.pop() if len(stack): stack[-1] *= 2 stack.append(2 * num) return sum(stack)
다른방법 2
def solution(dartResult): point = [] answer = [] dartResult = dartResult.replace('10','k') point = ['10' if i == 'k' else i for i in dartResult] print(point) i = -1 sdt = ['S', 'D', 'T'] for j in point: if j in sdt : answer[i] = answer[i] ** (sdt.index(j)+1) elif j == '*': answer[i] = answer[i] * 2 if i != 0 : answer[i - 1] = answer[i - 1] * 2 elif j == '#': answer[i] = answer[i] * (-1) else: answer.append(int(j)) i += 1 return sum(answer)
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 문자열 내 마음대로 정렬하기 (0) 2022.04.14 [프로그래머스] 두 정수 사이의 합 (0) 2022.04.14 [프로그래머스] 나누어 떨어지는 숫자 배열 (0) 2022.04.12 [프로그래머스] 같은 숫자는 싫어 (0) 2022.04.11 [프로그래머스] 가운데 글자 가져오기 (0) 2022.04.11 [프로그래머스] [1차] 비밀지도 (0) 2022.04.11 [프로그래머스] 부족한 금액 계산하기 (0) 2022.04.07 [프로그래머스] 나머지가 1이 되는 수 찾기 (0) 2022.04.06