https://programmers.co.kr/learn/courses/30/lessons/17682
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
기본틀
class Solution {
public int solution(String dartResult) {
int answer = 0;
return answer;
}
}
첫번째 시도
class Solution {
public int solution(String dartResult) {
int score1 = 0, score2 = 0, score3 = 0;
String bonus1 = "", bonus2 = "", bonus3 = "";
String option1 = "", option2 = "", option3 = "";
char[] arr = dartResult.toCharArray();
int[] arrInt = new int[arr.length];
for(int i = 0; i < arr.length; i++){
if(Character.isDigit(arr[i])){
arrInt[i] = 1;
}else{
arrInt[i] = 0;
}
}
int index1 = 0, index2 = 0;
int i = 0;
while(true){
if(arrInt[i] == 0 && arrInt[i+1] == 1){
index1 = i+1;
break;
}
i++;
}
int j = index1;
while(true){
if(arrInt[j] == 0 && arrInt[j+1] == 1){
index2 = j+1;
break;
}
j++;
}
if(index1 == 2){
score1 = Character.getNumericValue(arr[0]);
bonus1 = String.valueOf(arr[1]);
}else if(index1 == 4){
score1 = 10;
bonus1 = String.valueOf(arr[2]);
option1 = String.valueOf(arr[3]);
}else{
if(arrInt[1] == 1){
score1 = 10;
bonus1 = String.valueOf(arr[2]);
}else{
score1 = Character.getNumericValue(arr[0]);
bonus1 = String.valueOf(arr[1]);
option1 = String.valueOf(arr[2]);
}
}
if((index2 - index1) == 2){
score2 = Character.getNumericValue(arr[index1]);
bonus2 = String.valueOf(arr[index1+1]);
}else if((index2 - index1) == 4){
score2 = 10;
bonus2 = String.valueOf(arr[index1+2]);
option2 = String.valueOf(arr[index1+3]);
}else{
if(arrInt[index1+1] == 1){
score2 = 10;
bonus2 = String.valueOf(arr[index1+2]);
}else{
score2 = Character.getNumericValue(arr[index1]);
bonus2 = String.valueOf(arr[index1+1]);
option2 = String.valueOf(arr[+index1+2]);
}
}
if((arr.length - index2) == 2){
score3 = Character.getNumericValue(arr[index2]);
bonus3 = String.valueOf(arr[index2+1]);
}else if((arr.length - index2) == 4){
score3 = 10;
bonus3 = String.valueOf(arr[index2+2]);
option3 = String.valueOf(arr[index2+3]);
}else{
if(arrInt[index2+1] == 1){
score3 = 10;
bonus3 = String.valueOf(arr[index2+2]);
}else{
score3 = Character.getNumericValue(arr[index2]);
bonus3 = String.valueOf(arr[index2+1]);
option3 = String.valueOf(arr[index2+2]);
}
}
if(bonus1.equals("D")){
score1 = score1 * score1;
}else if(bonus1.equals("T")){
score1 = score1 * score1 * score1;
}
if(bonus2.equals("D")){
score2 = score2 * score2;
}else if(bonus2.equals("T")){
score2 = score2 * score2 * score2;
}
if(bonus3.equals("D")){
score3 = score3 * score3;
}else if(bonus3.equals("T")){
score3 = score3 * score3 * score3;
}
if(option1.equals("#")){
score1 = score1 * (-1);
}
if(option2.equals("#")){
score2 = score2 * (-1);
}
if(option3.equals("#")){
score3 = score3 * (-1);
}
if(option1.equals("*")){
score1 = score1 * 2;
}
if(option2.equals("*")){
score1 = score1 * 2;
score2 = score2 * 2;
}
if(option3.equals("*")){
score2 = score2 * 2;
score3 = score3 * 2;
}
int answer = 0;
answer = score1 + score2 + score3;
return answer;
}
}
성공... 하긴 했는데 진짜.. 코드 길다... ㅎㅎ....... 이게 맞나...?
'프로그래머스 > Lv.1' 카테고리의 다른 글
Lv.1 2016년 (0) | 2022.06.17 |
---|---|
Lv.1 가운데 글자 가져오기 (0) | 2022.06.10 |
Lv.1 같은 숫자는 싫어 (0) | 2022.06.08 |
Lv.1 나누어 떨어지는 숫자 배열 (0) | 2022.06.06 |
Lv.1 두 정수 사이의 합 (0) | 2022.06.06 |