💡풀이
import java.util.Arrays;
class Solution {
public int solution(String dartResult) {
// 점수(숫자)만 뽑아 int[]로 변환
int[] numbers = Arrays.stream(dartResult.split("[^0-9]")) // 숫자가 아닌 문자로 split
.filter(e -> !e.isBlank()) // 빈 토큰 제거
.mapToInt(Integer::parseInt) // int 변환
.toArray();
// 점수를 제외한 옵션(S·D·T·*·#)만 String[]로 추출
String[] options = Arrays.stream(dartResult.split("[0-9]")) // 숫자로 split
.filter(e -> !e.isBlank()) // 빈 토큰 제거
.toArray(String[]::new);
for (int i = 0; i < numbers.length; i++) {
// 옵션 문자열을 문자 단위로 순회
for (char option : options[i].toCharArray()) {
switch (option) {
case 'D': // Double → 제곱 2
numbers[i] = (int) Math.pow(numbers[i], 2);
break;
case 'T': // Triple → 제곱 3
numbers[i] = (int) Math.pow(numbers[i], 3);
break;
case '*': // 스타상 → 현재·이전 점수 2배
numbers[i] *= 2;
if (i > 0) numbers[i - 1] *= 2;
break;
case '#': // 아차상 → 현재 점수 음수
numbers[i] *= -1;
break;
// 'S'는 1제곱이라 별도 처리 불필요
}
}
}
// 세 라운드 점수 합계 반환
return Arrays.stream(numbers).sum();
}
}
📖새로 배운 부분
- 문자열 자르기에 대해 정리한 블로그 글 입니다 😊
[Java, String] split() 메서드 정리 - 문자열 자르기
Java String split() 메서드 완벽 정리Java에서 문자열을 분할하는 가장 기본적이고 중요한 메서드인 split()에 대해 자세히 알아보겠습니다.이 메서드는 정규식을 사용하여 문자열을 배열로 분할하는
devoks.tistory.com
GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.
프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스, Java] 둘만의 암호 (0) | 2025.07.18 |
---|---|
[프로그래머스, Java] 로또의 최고 순위와 최저 순위 (0) | 2025.07.18 |
[프로그래머스, Java][PCCE 기출문제] 9번 / 지폐 접기 (0) | 2025.07.18 |
[프로그래머스, Java] 실패율 (0) | 2025.07.18 |
[프로그래머스, Java] 옹알이 (2) (0) | 2025.07.18 |