1- import java .util .Stack ;
2-
1+ import java .util .*;
32class Solution {
43 public int solution (String dartResult ) {
5- int answer = 0 ;
6- int len = dartResult .length ();
7-
8- Stack <Integer > stack = new Stack <>();//스택 선언
9-
10- for (int i =0 ; i <len ; i ++ ) {
11- String s = "" +dartResult .charAt (i );
12-
13- if (s .matches ("^[0-9]" )) { //0~9점 사이일때
14- String num = s ;
15- if (i <len -1 && dartResult .charAt (i +1 )=='0' ) {
16- num += dartResult .charAt (i +1 );
17- i ++;
18- }
19- stack .push (Integer .parseInt (num ));
20- }
21- else if (s .matches ("[D,T]" )) {
22- if (!s .isEmpty ()) {
23- int num = stack .pop ();
24- if (s .equals ("D" )) {
25- num = (int ) Math .pow (num , 2 );
26- }else {
27- num = (int ) Math .pow (num , 3 );
28- }
29- stack .push (num );
30- }
31- }
32- else if (s .matches ("[*]" )) {
33- int time =2 ;
34- if (stack .size ()==1 ) {
35- int num = stack .pop ();
36- num *= 2 ;
37- stack .push (num );
38- }else {
39- int num1 = stack .pop ();
40- int num2 = stack .pop ();
41- num1 *= 2 ;
42- num2 *= 2 ;
43-
44- stack .push (num2 );
45- stack .push (num1 );
46- }
47- }
48- else if (s .matches ("[#]" )) {
49- if (!stack .isEmpty ()) {
50- int num = stack .pop ();
51- num *= -1 ;
52- stack .push (num );
53- }
54- }
4+ Stack <Integer > stack = new Stack <>();
5+ int sum = 0 ;
6+ for (int i = 0 ; i < dartResult .length (); ++i ) {
7+ char c = dartResult .charAt (i );
8+ if (Character .isDigit (c )) {
9+ sum = (c - '0' );
10+ if (sum == 1 && i < dartResult .length () - 1 && dartResult .charAt (i + 1 ) == '0' ) {
11+ sum = 10 ;
12+ i ++;
13+ }
14+ stack .push (sum );
15+ } else {
16+ int prev = stack .pop ();
17+ if (c == 'D' ) {
18+ prev *= prev ;
19+ } else if (c == 'T' ) {
20+ prev = prev * prev * prev ;
21+ } else if (c == '*' ) {
22+ if (!stack .isEmpty ()) {
23+ int val = stack .pop () * 2 ;
24+ stack .push (val );
25+ }
26+ prev *= 2 ;
27+ } else if (c == '#' ) {
28+ prev *= (-1 );
29+ }
30+ // System.out.println(prev);
31+ stack .push (prev );
32+ }
5533 }
56-
57- while (!stack .isEmpty ()) {
58- answer += stack .pop ();
34+ int totalScore = 0 ;
35+ while (!stack .isEmpty ()) {
36+ totalScore += stack .pop ();
5937 }
60- return answer ;
38+ return totalScore ;
6139 }
6240}
0 commit comments