-
프로그래머스 (Level 1) - 다트 게임Coding Test/Coding Test 문제 풀이 2021. 12. 25. 16:53
문제 설명
풀이
다른 자료구조나 알고리즘이 필요한 방식이 아닌, 평범한 구현 문제였다. 문제 설명에서 주어진 보너스, 옵션에 부합하도록 점수를 조정해주면 되는 문제이다.
입력받은 문자열의 문자를 하나씩 탐색하면서 점수, 보너스, 옵션을 조건문으로 분리하며 풀이를 했다.
점수에 해당하는 인덱스를 적절하게 조정해서 보너스 또는 옵션을 부여하는 것이 핵심이었다.
전체 소스코드
import java.io.*; import java.util.*; public class Main { public int solution(String dartResult) { int[] points = new int[3]; int index = -1; for (int i = 0; i < dartResult.length(); i++) { char ch = dartResult.charAt(i); /** 탐색 문자가 점수인 경우 */ if ('0' <= ch && ch <= '9') { index++; /* 점수가 10인 경우 */ if (dartResult.charAt(i + 1) == '0') { points[index] = 10; i++; } /* 점수가 0~9인 경우 */ else { points[index] = Integer.parseInt(ch + ""); } } /** 탐색 문자가 보너스인 경우 */ else if (ch == 'S' || ch == 'D' || ch == 'T') { if (ch == 'D') { points[index] = (int) Math.pow(points[index], 2); } else if (ch == 'T') { points[index] = (int) Math.pow(points[index], 3); } } /** 탐색 문자가 옵션인 경우 */ else { if (ch == '*') { if (0 < index) points[index - 1] *= 2; points[index] *= 2; } else { points[index] *= -1; } } } int answer = 0; for (int point : points) answer += point; return answer; } }
728x90'Coding Test > Coding Test 문제 풀이' 카테고리의 다른 글
프로그래머스 (Level 1) - 없는 숫자 더하기 (0) 2021.12.26 프로그래머스 (Level 1) - 음양 더하기 (0) 2021.12.26 프로그래머스 (Level 1) - 로또의 최고 순위와 최저 순위 (0) 2021.12.26 프로그래머스 (Level 1) - 키패드 누르기 (0) 2021.12.24 프로그래머스 (Level 1) - 숫자 문자열과 영단어 (0) 2021.12.24