728x90

문제는 길지만 잘 읽어보면 문자열을 탐색해서 조건에 맞게 처리해주면 된다. switch/case문을 사용했다. 점수 저장 변수(= score)를 int로 선언했더니 에러가 났는데, 찾아보니 두 자릿수인 10을 고려해서 String으로 저장하길래 String으로 바꿨다.

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제는 길지만 잘 읽어보면 문자열을 탐색해서 조건에 맞게 처리해주면 된다.

switch/case문을 사용했다.

 

점수 저장 변수(= score)를 int로 선언했더니 에러가 났는데,

찾아보니 두 자릿수인 10을 고려해서 String으로 저장하길래 String으로 바꿨다.

 

아래는 문제 풀이 코드이다.

 

import java.util.*;

class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        
        // 점수 저장 변수
        
        String score = "";
        
        // 총 3번의 기회에서 얻은 점수 저장 배열
        
        int arr[] = new int[3];
        
        int idx = 0;
        
        // 숫자일 때는 score 변수에 점수를 저장하고, 
        // 그 외 문자열이 입력되는 경우 알맞게 처리해준다.
        
        for (int i=0; i<dartResult.length(); i++) {
            switch(dartResult.charAt(i)) {
                case 'S' :
                    arr[idx] = Integer.parseInt(score);
                    idx++;
                    score = "";
                    break;
                case 'D' :
                    arr[idx] = (int)Math.pow(Integer.parseInt(score),2);
                    idx++;
                    score = "";
                    break;
                case 'T' :
                    arr[idx] = (int)Math.pow(Integer.parseInt(score),3);
                    idx++;
                    score = "";
                    break;
                case '*' :
                    arr[idx-1] *= 2;
                    if (idx > 1) arr[idx-2] *= 2;
                    break;
                case '#' :
                    arr[idx-1] *= (-1);
                    break;
                default :
                    score += String.valueOf(dartResult.charAt(i));
                    break;
            }
            
        }
        
        answer = arr[0] + arr[1] + arr[2];
        
        return answer;
    }
}

728x90

+ Recent posts