devFancy BE Developer

[Programmers] 17682. [1차] 다트 게임

2023-01-29
devfancy

문제 링크

성능 요약

메모리: 77.8 MB, 시간: 0.43 ms

구분

코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT

Answer Code1(23.01.29)

class Solution {
    public int solution(String dartResult) {
        int answer = 0;

        String[] dart = dartResult.split("");
        int[] score = new int[3]; // 점수

        int index = -1; // score index
        for(int i=0; i<dart.length; i++) {
            // 숫자인지 확인
            if(dart[i].matches("[0-9]")) {
                index++;
                score[index] = Integer.parseInt(dart[i]);
                // 두자리 수 숫자?
                if(dart[i+1].matches("[0-9]")) {
                    score[index] *= 10;
                    i++;
                }
            }

            switch(dart[i]) {
                case "D":
                    score[index] = (int)Math.pow(score[index], 2);
                    break;
                case "T" :
                    score[index] = (int)Math.pow(score[index], 3);
                    break;
                case "*" :
                    score[index] *= 2;
                    if(index - 1 >= 0) score[index-1] *= 2;
                    break;
                case "#" :
                    score[index] *= -1;
            }

        }

        for(int s : score) {
            answer += s;
        }

        return answer;
    }
}

Review

  • 배열로 변환해서 조건에 따라 if문과 switch-case문을 활용했다.

  • 정규 표현식 방법과 switch-case문에 대한 이해만 알면 풀 수 있는 문제였다.


Comments

Index