Q1) 이 문제 어떻게 이해하셨나요?
A1) 이 문제는 다트 점수를 규칙에 따라 계산한 다음 총합을 구하는 문제라고 이해했습니다. 다트는 총 3세트로 구성이 되어있고, 각 세트는 점수, 보너스, 옵션으로 구성되어있습니다.
Q2) 어떻게 풀 계획인가요?
A2) 우선 입력값의 문자열을 순서대로 탐색하면서 점수, 보너스, 옵션을 파싱합니다.
점수를 계산한 후, 옵션에 따라 현재 점수와 이전 점수를 처리하고 마지막에 점수 리스트의 합을 반환합니다.
*풀이 과정
1. 먼저 문자열을 탐색하면서 점수를 뽑는데, 10은 두자리 숫자라서 예외처리를 해줘야합니다.
2. 점수를 뽑았으면 그 다음 문자는 반드시 보너스니까, S/D/T에 따라 제곱 계산을 해줍니다.
3. 그 다음은 문자가 * 또는 # 일 수 있으므로, 그 부분은 조건문으로 처리합니다.
4. 위에서 계산된 점수는 scores 리스트에 저장하고, 마지막에 총합을 sum(scores)로 구해 반환합니다.
📌 최적 코드
dartResult = "1S2D*3T"
def solution(dartResult):
scores = []
i = 0
length = len(dartResult)
while i < length:
# 1. 점수 추출 (10일 수도 있으므로 2자리 처리)
if dartResult[i] == '1' and i + 1 < length and dartResult[i+1] == '0':
score = 10
i += 2
else:
score = int(dartResult[i])
i += 1
# 2. 보너스 처리
bonus = dartResult[i]
if bonus == 'S':
score = score ** 1
elif bonus == 'D':
score = score ** 2
elif bonus == 'T':
score = score ** 3
i += 1
# 3. 옵션 처리 (* or #)
if i < length and dartResult[i] in ['*', '#']:
if dartResult[i] == '*':
score *= 2
if scores: # 이전 점수도 2배 처리
scores[-1] *= 2
else:
score *= -1
i += 1
# 4. 점수 저장
scores.append(score)
return sum(scores)
[추천 강의✨]
38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의
현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,
www.inflearn.com
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인
현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.
www.inflearn.com
728x90
반응형
'Algorithm' 카테고리의 다른 글
| [백준 15649 | python] N과 M (1) (백트레킹) (0) | 2025.06.21 |
|---|---|
| [카카오 코테 2018 | python] 비밀지도 (0) | 2025.06.19 |
| [카카오 코테 2023 | python] 개인정보 수집 유효기간 (0) | 2025.06.18 |
| [카카오 코테 2022 | python] 양궁대회 (0) | 2025.06.17 |
| [카카오 코테 2019 | python] 오픈 채팅방 ✅ (0) | 2025.06.17 |