728x90
https://programmers.co.kr/learn/courses/30/lessons/17682
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
// 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import java.util.*;
class Solution {
public int solution(String dartResult) {
// 연산된 숫자들이 들어있는 배열
int[] sum = new int[dartResult.length()];
// 배열에 들어갈 숫자들의 위치
int cursor = -1;
// 현재 숫자에 연산을 모두 해주고 연산이 끝나면 sum에 합산해준다.
int curNum = 0;
for(int idx=0; idx<dartResult.length(); ++idx) {
char c = dartResult.charAt(idx);
// 1. 숫자인경우 -> curNum을 갱신해준다.
if(Character.isDigit(c)) {
// 문자단위로 읽어들이기 때문에 10인 경우에는 별도의 처리가 필요하다.
if(c == '1' && idx+1 < dartResult.length() && dartResult.charAt(idx+1) == '0') {
curNum = 10;
idx++;
}
// 0 ~ 9
else {
curNum = Integer.parseInt(String.valueOf(c));
}
++cursor;
}
// 2. 숫자가 아닌경우
else {
// 2-1.Single, Double, Triple
if(Character.isLetter(c)) {
int operNum = 0;
if(c == 'S') operNum = 1;
else if(c == 'D') operNum = 2;
else operNum = 3;
sum[cursor] = (int)Math.pow(curNum, operNum);
}
// 2-2.Option
else {
// 스타상
if(c == '*') {
sum[cursor] *= 2;
if(cursor > 0) sum[cursor - 1] *= 2;
}
// 아차상
else {
sum[cursor] *= (-1);
}
}
}
}
// 최종 답을 구한다.
++cursor;
int answer = 0;
while(cursor --> 0) answer += sum[cursor];
return answer;
}
}
|
cs |
반응형
'CS > 알고리즘_KAKAO BLIND RECRUITMENT' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT : 블록 게임 (0) | 2021.11.02 |
---|---|
2018 KAKAO BLIND RECRUITMENT : [3차] n진수 게임 (0) | 2021.11.01 |
2019 KAKAO BLIND RECRUITMENT : 매칭 점수 (0) | 2021.10.28 |
2018 KAKAO BLIND RECRUITMENT[1차] 뉴스 클러스터링 (0) | 2021.10.27 |
2021 KAKAO BLIND RECRUITMENT : 매출 하락 최소화 (0) | 2021.10.26 |