Skip to content

Commit aeff215

Browse files
committed
다트 게임
1 parent b2163c6 commit aeff215

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/**
2+
* PackageName : week10.이상억.progarmmers;
3+
* FileName : 다트_게임
4+
* Author : sangeok
5+
* Date : 2025. 6. 28.
6+
* Description :
7+
* =====================================================================================================================
8+
* DATE AUTHOR NOTE
9+
* ---------------------------------------------------------------------------------------------------------------------
10+
* 2025. 6. 28. sangeok Initial creation
11+
*/
12+
13+
14+
// 문제 요구사항 : S -> x^1 / D -> x^2 / T -> x^3
15+
// * -> a x b / # -> a - b
16+
// * 당첨 시 해당 점수와 바로 전에 얻은 점수 2배 // # 당첨시 해당 점수 마이너스
17+
// * 첫번째 나올 시 해당 점수만 두배
18+
19+
// 회고 : 푸는데 문제 조건이 많아서 귀찮았다. 그리고 각 문자열을 split 해서 박은 다음 배열로 돌면 쉽겠다 했는데
20+
// 1 / 10 을 처리하는 과정 이 부분을 신경쓰지 못해 좀 헤맸었다. 그냥 바로바로 생각나는 코드를 마구잡이로 작성해서 코드가 지저분 했다.
21+
// 다른 사람 풀이를 보니까 정규식으로 쉽게 나누던데 그 부분도 한번 공부해봐야겠다.
22+
23+
import java.util.*;
24+
25+
class Solution {
26+
public int solution(String dartResult) {
27+
int answer = 0;
28+
List<Integer> scores = new ArrayList<>();
29+
int point = 0;
30+
31+
char[] arr = dartResult.toCharArray();
32+
33+
for (int i = 0; i < arr.length; i++) {
34+
char c = arr[i];
35+
if (c == '1' && i + 1 < arr.length && arr[i + 1] == '0') {
36+
point = 10;
37+
i++; // '0'은 건너뜀
38+
}
39+
else if (Character.isDigit(c)) {
40+
point = c - '0';
41+
}
42+
else if (c == 'S' || c == 'D' || c == 'T') {
43+
point = dartoption(point, String.valueOf(c));
44+
scores.add(point);
45+
}
46+
else if (c == '*') {
47+
int size = scores.size();
48+
if (size >= 1) scores.set(size - 1, scores.get(size - 1) * 2);
49+
if (size >= 2) scores.set(size - 2, scores.get(size - 2) * 2);
50+
}
51+
else if (c == '#') {
52+
int size = scores.size();
53+
scores.set(size - 1, scores.get(size - 1) * -1);
54+
}
55+
}
56+
57+
for (int s : scores) answer += s;
58+
return answer;
59+
}
60+
61+
public int dartoption(int point, String op) {
62+
switch (op) {
63+
case "S": break;
64+
case "D": point = (int) Math.pow(point, 2); break;
65+
case "T": point = (int) Math.pow(point, 3); break;
66+
default: break;
67+
}
68+
return point;
69+
}
70+
}
71+

0 commit comments

Comments
 (0)