[프로그래머스] 다트 게임(17682)

lhs's avatar
Nov 25, 2024
[프로그래머스] 다트 게임(17682)
 

1. 문제 풀이 아이디어

  • 문자열에서 숫자만 걸러 배열로 만든 뒤, 들어오는 문자에 따라 연산을 수행하면 문제를 해결할 수 있다.

2. 나의 정답 코드

class Solution { public int solution(String dartResult) { int[] arr = Arrays.stream(dartResult.split("[SDT*#]")).filter(s -> !s.isEmpty()).mapToInt(Integer::parseInt).toArray(); int index = -1; for (char c : dartResult.toCharArray()) { if (c == 'S') { index++; } else if (c == 'D') { index++; arr[index] *= arr[index]; } else if (c == 'T') { index++; arr[index] *= arr[index] * arr[index]; } else if (c == '*') { arr[index] *= 2; if (index > 0) arr[index - 1] *= 2; } else if (c == '#') { arr[index] *= -1; } } return Arrays.stream(arr).sum(); } }

3. 정리

  • 입력값에 split 메서드를 사용해 숫자를 분리한 후, 스트림을 사용하여 빈 문자열을 제거하고 int 배열로 변환한다.
  • index-1로 초기화한 후, for문에서 각 문자에 따라 해당하는 연산을 수행한다.
  • 모든 연산을 끝낸 뒤, 배열의 전체 합을 반환하여 문제를 해결한다.
 
Share article

LHS's Study Space