(프로그래머) (초기) 다트 게임 (C++)

(1차) 다트 게임 / Lv.1


문제 설명)

카카오톡의 네 번째 스타!카카오톡 게임이 지루할 때


카카오톡 게임별은 하반기 다트 게임을 신규 서비스로 출시하기로 했다. 다트 게임은 다트판에 3개의 다트를 던지고 합산 점수로 실력을 겨루는 것만으로 남녀노소 누구나 즐길 수 있는 게임이다.
입사한 지 얼마 안 된 무인양품은 코딩 능력을 인정받아 게임의 핵심인 점수 계산 로직을 담당하게 됐다. 다트 게임의 점수 계산 로직은 다음과 같습니다.

  1. 다트 경기에는 3번의 기회가 있습니다.
  2. 각 기회는 0점에서 10점 사이의 척도로 점수가 매겨집니다.
  3. 싱글(S), 더블(D), 트리플(T) 영역과 포인트가 있으며 각 영역은 1그리드, 2그리드, 3그리드(점수 1 점수 2 점수 3 )는 다음과 같이 계산됩니다.
  4. 옵션으로 스타 어워드
  5. 하위 측면(#)이 존재하고 점성술
  6. 승리 시 해당 점수는 이전 점수의 2배가 됩니다. 2등(#)의 경우 해당 점수는 마이너스 처리됩니다.
  7. 스타 상
  8. 첫 번째 기회에 올 수도 있습니다.이 경우 별 1개
  9. 포인트만 2배가 됩니다. (참고예 4)

스타 상

또 다른 스타상의 효과

중첩된 점성술의 경우 영향과 겹칠 수 있습니다.

점수는 4배가 되었습니다. (참고예 4)

스타 상

의 효과는 하위 명령(#)의 효과와 겹칠 수 있습니다. 이 경우 중첩된 하위 구문(#)에 대한 점수는 -2배입니다. (참고예 5)

각 점수는 싱글(S), 더블(D), 트리플(T)로 존재합니다.
스타 상 후행(#)은 각 분수에 대해 존재할 수도 있고 존재하지 않을 수도 있습니다.0에서 10까지의 정수와 S, D, T, *, #의 문자열이 주어지면 총 점수를 반환하는 함수를 작성하세요.

입력 형식)

“점수|보너스|(선택사항)”으로 구성된 문자열 3세트.

예)

1S2D*3T

점수는 0에서 10 사이의 정수입니다.

보너스는 S, D 또는 T 중 하나입니다.

옵션은 *, # 또는 없음일 수 있습니다.


출력 형식)

3번의 기회로 획득한 점수의 합에 해당하는 정수 값을 출력합니다.

예) 37

입출력 예)
설명하다)
하나
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
이십 일
스물 둘
이십 삼
스물넷
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48세
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 70717273
74 757677#포함하다
<>#포함하다
< 벡터> #포함하다<
math.h
> 사용
네임스페이스 기준 ; 정수해결책(
다트 결과) {
정수답변
=0; // 각 점수에 대한 벡터를 저장합니다.
// 0을 패딩으로 사용합니다.
벡터
<정수 > 다트{ 0};
//임시 수신 문자열
온도 = “”;
// 입력 문자열을 숫자 결과로 변환
정수결과 = 0;
// 현재 조회 중인 인덱스정수 신분증 = 0; ~을 위한(정수
=
0
; 나< dartResult.length();i + + ){
// 각 문자를 하나씩 봅니다.
자원= dartResult.substr(i,하나 );
// 옵션이 주어진 경우
만약에
(자원 == “*”)
{ // *2 현재 인덱스와 이전 인덱스를 수행합니다.다트 (idx)* = 2;다트 (idx
하나
)* = 2 ;} // 현재 보고 있는 인덱스에 대해 *-1을 수행합니다.
다른
만약에(자원 ==“#”
)
{
다트 (idx)*
=하나 ; } // 편의상 식별하기 쉬운 SDT를 다시 작성했습니다. 다른 만약에 (자원= = “에스”| | 자원= =“디”
||
자원 = =
“티”) { // 임시를 int 유형으로 변환합니다.결과=
stoi(온도);
만약에(자원
= = “에스”)
{다트.밀어(결과);
온도
= “”; 신분증 ++ ;}
다른
만약에(자원 ==
“디” ){다트.
밀어(파우(결과,2));
온도
= “”; 신분증 ++ ;}
다른
만약에(자원 ==
“티” ){다트.
밀어(파우(결과,));
온도
=
“”
;신분증 +
+
; }}
// 숫자 입력을 받습니다.
다른
{온도+ =자원;}
}
~을 위한 (
자동차
&전자: 다트) {
답변
=

전자; }

반품

답변;

}

컬러 스크립터의 컬러링 CS 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머는 코드 중심의 개발자를 고용합니다. 스택 기반 위치 일치. 프로그래머를 위한 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오. 프로그래머.co.kr