Skip to content

Commit cad2c82

Browse files
committed
[level 1] Title: [1차] 다트 게임, Time: 0.19 ms, Memory: 79.7 MB -BaekjoonHub
1 parent 782f842 commit cad2c82

2 files changed

Lines changed: 37 additions & 59 deletions

File tree

프로그래머스/1/17682. [1차] 다트 게임/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# [level 1] [1차] 다트 게임 - 17682
22

3-
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/17682?language=java)
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/17682)
44

55
### 성능 요약
66

7-
메모리: 73.9 MB, 시간: 16.39 ms
7+
메모리: 79.7 MB, 시간: 0.19 ms
88

99
### 구분
1010

@@ -16,7 +16,7 @@
1616

1717
### 제출 일자
1818

19-
2025년 05월 26일 02:22:06
19+
2025년 05월 26일 02:30:43
2020

2121
### 문제 설명
2222

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,40 @@
1-
import java.util.Stack;
2-
1+
import java.util.*;
32
class 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

Comments
 (0)