https://programmers.co.kr/learn/courses/30/lessons/17682
[풀이]
구현하는 것에는 큰 어려움이 없지만, 조건이 1번부터 9번까지 총 9개의 조건이 있다. 이 조건을 모두 if-else문으로 구현하였다. 이 중, 신경써야 할 부분은 *이 나타났을때의 조건이다. 만약 *이 발생하면 앞서 중첩되어있는 숫자를 곱해주기 때문이다. 이 부분만 신경쓰면서 하나씩 구현하면 되는 문제이다.
[코드]
public class Solution {
public int solution(String dartResult) {
int answer = 0;
int[] score = new int[3];
String tempString = "";
int tempNum = 0;
int idx = 0;
for (int i = 0; i < dartResult.length(); i++) {
char c = dartResult.charAt(i);
if (c >= '0' && c <= '9') {
tempString += String.valueOf(c);
} else if (c == 'S' || c == 'D' || c == 'T') {
tempNum = Integer.parseInt(tempString);
if (c == 'S') {
tempNum = (int) Math.pow(tempNum, 1);
} else if (c == 'D') {
tempNum = (int) Math.pow(tempNum, 2);
} else {
tempNum = (int) Math.pow(tempNum, 3);
}
score[idx++] = tempNum;
tempString = "";
} else {
if (c == '#') {
score[idx - 1] *= -1;
} else {
score[idx - 1] *= 2;
if (idx - 2 >= 0) {
score[idx - 2] *= 2;
}
}
}
}
for (int i = 0; i < score.length; i++) {
answer += score[i];
}
return answer;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 약수의 개수와 덧셈(Java) (0) | 2021.07.10 |
---|---|
프로그래머스 : 비밀지도(Java) (0) | 2021.07.09 |
프로그래머스 : 영어 끝말잇기(Java) (0) | 2021.07.09 |
프로그래머스 : 게임 맵 최단거리(Java) (0) | 2021.07.08 |
프로그래머스 : 짝지어 제거하기(Java) (0) | 2021.07.07 |