CS/알고리즘_KAKAO BLIND RECRUITMENT

2018 KAKAO BLIND RECRUITMENT : [1차] 다트 게임

Jedy_Kim 2021. 10. 29. 11:30
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

 

반응형