File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed
Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments