반응형
https://school.programmers.co.kr/learn/courses/30/lessons/17682
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
Review
어떤 분 코드를 봤는데, 'S' 인 경우에는 계산을 해줄 필요가 없기 때문에 아예 분기 처리도 해주지 않았다. 완전 굿 아이디어인 듯
Code
class Solution {
public int solution(String dartResult) {
int answer = 0;
String[] sp = dartResult.split("");
int[] score = new int[3];
int index = -1;
for (int i = 0; i < sp.length; i++) {
if (sp[i].matches("[0-9]")) {
index++;
score[index] = Integer.parseInt(sp[i]);
if (sp[i + 1].matches("[0-9]")) {
score[index] *= 10;
i++;
}
}
switch (sp[i]) {
case "S":
score[index] = (int) Math.pow(score[index], 1);
break;
case "D":
score[index] = (int) Math.pow(score[index], 2);
break;
case "T" :
score[index] = (int) Math.pow(score[index], 3);
break;
case "*" :
score[index] *= 2;
if (index - 1 >= 0) {
score[index-1] *= 2;
}
break;
case "#" :
score[index] *= -1;
}
}
for (int s : score) {
answer += s;
}
return answer;
}
}
ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
얘는 어디서 이 에러가 나는지 모르겟서... 다시 풀어보기...
class Solution {
public int solution(String dartResult) {
int answer = 0;
int[] score = new int[3];
int index = 0;
int num = 0;
char c = ' ';
for (int i = 0; i < dartResult.length(); i++) {
char ch = dartResult.charAt(i);
if (Character.isDigit(ch)) {
if (c == ' ' || c == '*' || c == '#') {
num = ch - '0';
} else {
num = num * 10 + (ch - '0');
}
}
if (ch == 'S' || ch == 'D' || ch == 'T') {
if (ch == 'S') {
score[index] = (int) Math.pow(num, 1);
} else if (ch == 'D') {
score[index] = (int) Math.pow(num, 2);
} else if (ch == 'T') {
score[index] = (int) Math.pow(num, 3);
}
num = 0;
}
if (ch == '*' || ch == '#') {
if (ch == '*') {
score[index] *= 2;
score[index - 1] *= 2;
if (index > 0) {
score[index - 1] *= 2;
}
} else if (ch == '#') {
score[index] *= -1;
}
}
if (ch == 'S' || ch == 'D' || ch == 'T') {
index++;
}
c = ch;
}
for (int i = 0; i < score.length; i++) {
answer += score[i];
}
return answer;
}
}반응형
'Dev > Programmers' 카테고리의 다른 글
| [프로그래머스] 완주하지 못한 선수 (Java) (2) | 2024.12.19 |
|---|---|
| [프로그래머스] 폰켓몬 (Java) (1) | 2024.12.19 |
| [프로그래머스] 단어 변환 (Java) (0) | 2024.12.17 |
| [프로그래머스] 게임 맵 최단거리 (Java) (0) | 2024.12.17 |
| [프로그래머스] 네트워크 (Java) (1) | 2024.12.17 |