Skip to content

Commit e452bf2

Browse files
authored
[PG-17682] [1차] 다트 게임 (#6)
* PG-17682 * Update PG_17682.java
1 parent 7797b43 commit e452bf2

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

src/week01/Chanjong/PG_17682.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import java.util.ArrayList;
2+
3+
class PG_17681 {
4+
public int solution(String dartResult) {
5+
int answer = 0;
6+
ArrayList<Integer> scores = new ArrayList<>(); //최종 점수 3개를 저장하는 배열
7+
int i = 0;
8+
9+
//점수 저장 부분
10+
while(i<dartResult.length()){
11+
int num = 0;
12+
13+
if (Character.isDigit(dartResult.charAt(i)) && Character.isDigit(dartResult.charAt(i+1))){ //연속으로 숫자가 2자리일때(10일 경우)
14+
num = 10;
15+
i+=2;
16+
}
17+
else if (Character.isDigit(dartResult.charAt(i))){
18+
num = dartResult.charAt(i) - '0';
19+
i++;
20+
}
21+
22+
//문자 저장 부분
23+
if(dartResult.charAt(i) == 'S'){
24+
scores.add(num);
25+
}
26+
else if(dartResult.charAt(i) == 'D'){
27+
scores.add(num*num);
28+
}
29+
else{
30+
scores.add(num*num*num);
31+
}
32+
33+
//마지막에 옵션 없으므로 종료
34+
i++;
35+
if(i==dartResult.length()){
36+
break;
37+
}
38+
39+
//옵션 적용 부분
40+
int index = scores.size()-1; //옵션을 적용할 점수가 몇번째인지
41+
if(dartResult.charAt(i)=='*'){
42+
scores.set(index, scores.get(index)*2);
43+
if(index!=0){
44+
scores.set(index-1, scores.get(index-1)*2);
45+
}
46+
i++;
47+
}
48+
else if(dartResult.charAt(i)=='#'){
49+
scores.set(index, scores.get(index)*(-1));
50+
i++;
51+
}
52+
}
53+
54+
for (int score : scores){
55+
answer+=score;
56+
}
57+
return answer;
58+
}
59+
}

0 commit comments

Comments
 (0)