케이스윔의 개발 블로그

[프로그래머스][문자열처리] 다트게임 본문

Algorithm

[프로그래머스][문자열처리] 다트게임

kswim 2018. 12. 17. 16:59

문제

세번의 다트 게임을 통해 얻을 수 있는 점수를 계산 하시오. 총 3번의 기회가 있고 점수와 함께 제공되는 보너스와 옵션을 고려해야합니다.

문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17682)


풀이

상당히 문제가 길지만 그 만큼 조건이 많아서 각 조건들을 놓치지 않으면 해결할 수 있는 문제입니다. 처음에 입력이 string으로 들어오는데 3번의 점수로 나누어서 입력을 받을 수 있어야 하고, 보너스 계산은 쉽지만 옵션은 앞 점수까지도 고려해야합니다. 각 단계의 점수를 저장할 배열 num[3]과 스타상과 아차상을 저장할 bonus[3] 배열을 만들었습니다. S, D, T가 들어왔을 때는 각 점수에 바로 계산을 해서 num에 저장하면 되지만 #나 *가 들어왔을 때 바로 num 배열에서 수정을 하면 중첩으로 스타상, 아차상이 적용되는 경우를 처리할 수 없습니다. 3번의 입력을 다 저장한 후에는 result += num[i]*bonus[3] 을 해주면 result가 답이 됩니다. 예제가 설명이 잘 되어있어서 쉽게 풀 수 있었습니다. 만약 다트 던지는 횟수가 제한이 없거나(항상 다르거나) 보너스, 옵션이 좀 더 어렵게 주어지면 당황할 수도 있는 문제인 것 같습니다!

(해설: http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/)


코드

https://github.com/kswim/Algorithm/blob/master/StringManipulation/17682.cpp

Comments