https://programmers.co.kr/learn/courses/30/lessons/17682
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
import java.util.Arrays;
class Solution {
public int solution(String dartResult) {
int[] arrPoint = new int[3];
int[] arrNumPlace = new int[3];
int[] arrPointSum = new int[3];
int iIndex = 0;
// 숫자 위치와 숫자 구하기
for (int i = 0; i < dartResult.length(); i++) {
char nowChar = dartResult.charAt(i);
if (isNumber(nowChar) && iIndex < 3) {
arrNumPlace[iIndex] = i;
int temp = nowChar - '0';
if (isNumber(dartResult.charAt(i + 1))) {
temp = temp * 10 + (dartResult.charAt(i + 1) - '0');
i++;
}
arrPoint[iIndex++] = temp;
}
}
// 보너스가 계산된 수 구하기
Arrays.fill(arrPointSum, 1);
for (int i = 0; i < dartResult.length(); i++) {
char nowChar = dartResult.charAt(i);
if(isNumber(nowChar)) {
continue;
}
int iSection = getSection(arrNumPlace, i);
int iPoint = arrPoint[iSection];
if (nowChar == 'S') {
arrPointSum[iSection] *= iPoint;
}
if (nowChar == 'D') {
arrPointSum[iSection] *= iPoint * iPoint;
}
if (nowChar == 'T') {
arrPointSum[iSection] *= iPoint * iPoint * iPoint;
}
if (nowChar == '#') {
arrPointSum[iSection] *= -1;
}
if (nowChar == '*') {
int iCount = 0;
while(iSection - iCount >= 0 && iCount < 2) {
arrPointSum[iSection - iCount] *= 2;
iCount++;
}
}
}
// 합산
int answer = 0;
for (int i = 0; i < arrPoint.length; i++) {
answer += arrPointSum[i];
}
return answer;
}
public boolean isNumber(char chaNum) {
if (chaNum >= '0' && chaNum <= '9') {
return true;
}
return false;
}
public int getSection(int[] arrNum, int index) {
if (index >= arrNum[2]) {
return 2;
}
if (index >= arrNum[1]) {
return 1;
}
return 0;
}
}
Colored by Color Scripter
|
프로그래머스에서 다른사람들의 풀이를 보았지만
내 풀이가 더 가독성이 좋은 것 같다 엣헴
속도도 나쁘지 않은 것 같다.
"이 방법은 너무 구릴 것 같다"고 지레 겁먹고 머리만 싸매지말자
구린 것 같아도 일단 시도해보자
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]해시 : 베스트앨범 (level 3) (java) (0) | 2019.12.18 |
---|---|
[프로그래머스]해시 : 위장 (level 2) (java, c++) (0) | 2019.12.17 |
[프로그래머스][2019 KAKAO BLIND RECRUITMENT] 실패율 (level 1) (0) | 2019.12.10 |
[프로그래머스][2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도 (level 1) (0) | 2019.12.06 |
[프로그래머스][서머코딩/윈터코딩(~2018)] 예산 (level 1) (0) | 2019.12.06 |
댓글