알고리즘/programmers
프로그래머스 레벨1 다트게임 (JAVA)
dev-jo
2021. 7. 4. 21:52
주말이다. 평일에 풀었던걸 오늘 올려본다..
모든 코드는 GitHub 에 올려놓았다.
이번 문제는 목요일? 쯤 풀었던 거 같다..
https://programmers.co.kr/learn/courses/30/lessons/17682
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
프로그래머스 레벨 1 다트게임이다..
퇴근 15분 전에 잠깐 푼 거라 너무 개떡같이 푼 거 같다.. 나중에 시간 나면 코드를 줄여봐야겠다..
( 블로그에 올리기 쪽팔림 )
import java.util.ArrayList;
class Solution {
public int solution(String dartResult) {
int answer = 0;
ArrayList<String> list = new ArrayList<>();
String[] arr = dartResult.split("");
StringBuilder builder = new StringBuilder();
int count = 0;
builder.append(arr[0]);
for (int i = 1; i < arr.length; i++) {
try {
int num = Integer.parseInt(arr[i]);
if(count == 0) {
builder.append(num);
} else {
list.add(builder.toString());
builder.delete(0, builder.length());
builder.append(num);
count = 0;
}
} catch (NumberFormatException e) {
builder.append(arr[i]);
if (i == arr.length - 1) {
list.add(builder.toString());
}
count++;
}
}
ArrayList<Integer> integerArrayList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String[] tempArr = list.get(i).split("");
int num = pow(tempArr);
int c = 2;
if(tempArr[0].equals("1") && tempArr[1].equals("0")) {
c = 3;
}
for(int j=c; j<tempArr.length; j++) {
if(tempArr[j].equals("*")) {
if(i == 0) {
num *= 2;
} else {
num *= 2;
integerArrayList.set(i -1, integerArrayList.get(i -1) * 2);
}
} else {
num *= -1;
}
}
integerArrayList.add(num);
}
for(Integer i : integerArrayList) {
answer += i;
}
return answer;
}
private int pow(String[] arr) {
if(arr[0].equals("1") && arr[1].equals("0")) {
switch (arr[2]) {
case "S" :
return (int) Math.pow(10, 1);
case "D":
return (int) Math.pow(10, 2);
case "T":
return (int) Math.pow(10, 3);
}
} else {
switch (arr[1]) {
case "S" :
return (int) Math.pow(Integer.parseInt(arr[0]), 1);
case "D":
return (int) Math.pow(Integer.parseInt(arr[0]), 2);
case "T":
return (int) Math.pow(Integer.parseInt(arr[0]), 3);
}
}
return 0;
}
}
문자열을 숫자를 따로 분리하고
패턴에 맞게 수를 더해주고 곱해주었다..
분명 더 짧게 정말 짧게 될 텐데.. 나중에 줄여봐야겠다..