[프로그래머스, Java][1차] 다트 게임

2025. 7. 18. 19:26·CodingTest/Programmers

사진을 클릭하면 해당 문제로 이동

💡풀이

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
'CodingTest/Programmers' 카테고리의 다른 글
  • [프로그래머스, Java] 둘만의 암호
  • [프로그래머스, Java] 로또의 최고 순위와 최저 순위
  • [프로그래머스, Java][PCCE 기출문제] 9번 / 지폐 접기
  • [프로그래머스, Java] 실패율
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (110) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (17) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (78)
        • Programmers (78)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    BufferedReader
    codingtest
    switch
    StringTokenizer
    CS
    effectivejava
    json
    java
    programmers
    BufferedWriter
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[프로그래머스, Java][1차] 다트 게임
상단으로

티스토리툴바