반응형
🔐 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/17682
🔐 문제 분석
- 주어진 문자열(dartResult)을 탐색하며 규칙에 맞게 계산한다.
- 문자가 숫자면 점수를 누적한다.
- 문자가 S, D, T 중 하나이면 제곱 계산을 한다.
- 문자가 * 또는 # 이면 2배 혹은 -1배 처리를 한다.
🔐 문제 풀이
class Solution {
public int solution(String dartResult) {
int[] dart = new int[3];
int idx = 0;
String numstr = "";
for (int i = 0; i < dartResult.length(); i++) {
char c = dartResult.charAt(i);
if (c >= '0' && c <= '9') { // 점수
numstr += String.valueOf(c);
} else if (c == 'S' || c == 'D' || c == 'T') { // 보너스
int n = Integer.parseInt(numstr);
if (c == 'S') {
dart[idx++] = (int) Math.pow(n, 1);
} else if (c == 'D') {
dart[idx++] = (int) Math.pow(n, 2);
} else {
dart[idx++] = (int) Math.pow(n, 3);
}
numstr = "";
} else { // 옵션
if (c == '*') {
dart[idx - 1] *= 2;
if (idx - 2 >= 0) dart[idx - 2] *= 2;
} else {
dart[idx - 1] *= (-1);
}
}
}
return dart[0] + dart[1] + dart[2];
}
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] Lv1. 직사각형 별찍기 (0) | 2023.07.01 |
---|---|
[프로그래머스] Lv1. 기사단원의 무기 (0) | 2023.07.01 |
[프로그래머스] Lv1. 실패율 (0) | 2023.06.25 |
[프로그래머스] Lv1. 명예의 전당 (1) (0) | 2023.06.25 |
[프로그래머스] Lv1. 소수 찾기 (0) | 2023.06.24 |