๋ฌธ์ ์ค๋ช
๋คํธ ๊ฒ์
์นด์นด์คํก์ ๋ฌ ๋ค ๋ฒ์งธ ๋ณ! ์ฌ์ฌํ ๋? ์นด์นด์คํก ๊ฒ์๋ณ~
์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค.
๊ฐ ์
์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์ ํต์ฌ ๋ถ๋ถ์ธ ์ ์ ๊ณ์ฐ ๋ก์ง์ ๋งก๊ฒ ๋์๋ค. ๋คํธ ๊ฒ์์ ์ ์ ๊ณ์ฐ ๋ก์ง์ ์๋์ ๊ฐ๋ค.
- ๋คํธ ๊ฒ์์ ์ด 3๋ฒ์ ๊ธฐํ๋ก ๊ตฌ์ฑ๋๋ค.
- ๊ฐ ๊ธฐํ๋ง๋ค ์ป์ ์ ์๋ ์ ์๋ 0์ ์์ 10์ ๊น์ง์ด๋ค.
- ์ ์์ ํจ๊ป Single(S), Double(D), Triple(T) ์์ญ์ด ์กด์ฌํ๊ณ ๊ฐ ์์ญ ๋น์ฒจ ์ ์ ์์์ 1์ ๊ณฑ, 2์ ๊ณฑ, 3์ ๊ณฑ (์ ์1 , ์ ์2 , ์ ์3 )์ผ๋ก ๊ณ์ฐ๋๋ค.
- ์ต์ ์ผ๋ก ์คํ์(*) , ์์ฐจ์(#)์ด ์กด์ฌํ๋ฉฐ ์คํ์(*) ๋น์ฒจ ์ ํด๋น ์ ์์ ๋ฐ๋ก ์ ์ ์ป์ ์ ์๋ฅผ ๊ฐ 2๋ฐฐ๋ก ๋ง๋ ๋ค. ์์ฐจ์(#) ๋น์ฒจ ์ ํด๋น ์ ์๋ ๋ง์ด๋์ค๋๋ค.
- ์คํ์(*)์ ์ฒซ ๋ฒ์งธ ๊ธฐํ์์๋ ๋์ฌ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์คํ์(*)์ ์ ์๋ง 2๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
- ์คํ์(*)์ ํจ๊ณผ๋ ๋ค๋ฅธ ์คํ์(*)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์คํ์(*) ์ ์๋ 4๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
- ์คํ์(*)์ ํจ๊ณผ๋ ์์ฐจ์(#)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์์ฐจ์(#)์ ์ ์๋ -2๋ฐฐ๊ฐ ๋๋ค. (์์ 5๋ฒ ์ฐธ๊ณ )
- Single(S), Double(D), Triple(T)์ ์ ์๋ง๋ค ํ๋์ฉ ์กด์ฌํ๋ค.
- ์คํ์(*), ์์ฐจ์(#)์ ์ ์๋ง๋ค ๋ ์ค ํ๋๋ง ์กด์ฌํ ์ ์์ผ๋ฉฐ, ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
0~10์ ์ ์์ ๋ฌธ์ S, D, T, *, #๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์ ๋ ฅ๋ ์ ์ด์ ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ๋ ฅ ํ์
"์ ์|๋ณด๋์ค|[์ต์
]"์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด 3์ธํธ.
์) 1S2D*3T
- ์ ์๋ 0์์ 10 ์ฌ์ด์ ์ ์์ด๋ค.
- ๋ณด๋์ค๋ S, D, T ์ค ํ๋์ด๋ค.
- ์ต์ ์ *์ด๋ # ์ค ํ๋์ด๋ฉฐ, ์์ ์๋ ์๋ค.
์ถ๋ ฅ ํ์
3๋ฒ์ ๊ธฐํ์์ ์ป์ ์ ์ ํฉ๊ณ์ ํด๋นํ๋ ์ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์) 37
์ ์ถ๋ ฅ ์์
์์ dartResultanswer์ค๋ช1 | 1S2D*3T | 37 | 11 * 2 + 22 * 2 + 33 |
2 | 1D2S#10S | 9 | 12 + 21 * (-1) + 101 |
3 | 1D2S0T | 3 | 12 + 21 + 03 |
4 | 1S*2T*3S | 23 | 11 * 2 * 2 + 23 * 2 + 31 |
5 | 1D#2S*3S | 5 | 12 * (-1) * 2 + 21 * 2 + 31 |
6 | 1T2D3D# | -4 | 13 + 22 + 32 * (-1) |
7 | 1D2S3T* | 59 | 12 + 21 * 2 + 33 * 2 |
๐ฅ [๋ก์ง]
1. dartResult ๋ณ์๋ฅผ charํ ๋ฐฐ์ด๋ก ๋ณํํ ์ ์ฅํ๋ค.(toCharArray)
2. ๊ฐ ์ ์๋ค์ ๋ด์ ์ ์๋ฐฐ์ด numlist๋ฅผ ์ ์ธํ ํ ๊ฐ์ ํ๋์ฉ ํ์ธํ๋ค.
2-1. ์ซ์์ธ ๊ฒฝ์ฐ + ๊ทธ ๋ค์๊ฐ์ด 0์ธ๊ฒฝ์ฐ
=> 10์์ ์๋ฏธ, 10์ numlist์ ๋ฃ์ด์ฃผ๊ณ ์นด์ดํธ ์ฆ๊ฐ
2-2. ์ซ์์ธ ๊ฒฝ์ฐ
=> 0~9๊น์ง์ ์ซ์๋ฅผ ์๋ฏธ, ํด๋น ๊ฐ์ numlist์ ๋ฃ์ด์ฃผ๊ณ ์นด์ดํธ ์ฆ๊ฐ
2-3. ๋ฌธ์์ธ ๊ฒฝ์ฐ
=> ๋ณด๋์ค ๋ฌธ์์ธ ๊ฒฝ์ฐ('S', 'D', 'T') : Math.pow๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฐ ์ ๊ณฑ, ์ธ์ ๊ณฑํด์ฃผ๊ธฐ
=> ์ต์ ์ธ ๊ฒฝ์ฐ('*', '#') : ์ด์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด ๊ฐ๊ฐ ๊ณฑํด์ฃผ๊ธฐ
3. ์ต์ข ํฉ ๊ณ์ฐํ๊ธฐ
๐ฅ [์ต์ข ์ฝ๋]
import java.util.*;
class Solution {
public int solution(String dartResult) {
char[] clist = dartResult.toCharArray();
// System.out.println(dartResult.length());
int cnt = 0;
int[] numlist = new int[dartResult.length()];
for(int i = 0; i < dartResult.length(); i++) {
if(Character.isDigit(clist[i]) == true) {
if(clist[i+1]=='0') {
numlist[cnt++] = 10;
i++;
} else {
numlist[cnt++] = Character.getNumericValue(clist[i]);
}
} else {
switch(clist[i]){
case 'S':
numlist[cnt-1] *= 1;
break;
case 'D':
numlist[cnt-1] = (int)Math.pow(numlist[cnt-1],2);
break;
case 'T':
numlist[cnt-1] = (int)Math.pow(numlist[cnt-1],3);
break;
case '#':
numlist[cnt-1] *= -1;
break;
case '*':
if(cnt-1 > 0) {
numlist[cnt-2] *= 2;
}
numlist[cnt-1] *= 2;
break;
}
}
}
int answer = 0;
for(int j = 0; j < dartResult.length(); j++) {
answer += numlist[j];
}
return answer;
}
}
๐ฅ [์๊ฐ]
์ฝํ ์ค๋น๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ์ง ์ผ๋ง ๋์ง ์์ ์ฝ๋์ ๋ฏธํกํ ์ ์ด ๋ง์ ์ ์์ต๋๋ค.
๋ถ์กฑํ ์ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ์์ผ๋ก์ ํฌ์คํ ์ ๋ฐ์ํ๊ฒ ์ต๋๋ค! ๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค :)
-budtree