[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋คํธ ๊ฒ์
https://programmers.co.kr/learn/courses/30/lessons/17682
๋ฌธ์ ์ค๋ช
๋คํธ ๊ฒ์
์นด์นด์คํก์ ๋ฌ ๋ค ๋ฒ์งธ ๋ณ! ์ฌ์ฌํ ๋? ์นด์นด์คํก ๊ฒ์๋ณ~
์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค.
๊ฐ ์
์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์ ํต์ฌ ๋ถ๋ถ์ธ ์ ์ ๊ณ์ฐ ๋ก์ง์ ๋งก๊ฒ ๋์๋ค. ๋คํธ ๊ฒ์์ ์ ์ ๊ณ์ฐ ๋ก์ง์ ์๋์ ๊ฐ๋ค.
๋คํธ ๊ฒ์์ ์ด 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
Code
class Solution {
public int solution(String dartResult) {
int answer = 0;
int cnt = 0;
int[] scores = new int[3];
for(int i=0;i<dartResult.length();i++){
if(Character.isDigit(dartResult.charAt(i))){
if(i!=0) // ์ง๊ธ ์ธ๋ฑ์ค๊ฐ ์ซ์์ด๊ณ ์ ์ธ๋ฑ์ค๋ ์ซ์์ผ๋๋ 10์ด๋ฏ๋ก continue
if(Character.isDigit(dartResult.charAt(i-1)))
continue;
if(Character.isDigit(dartResult.charAt(i+1))){
// ์ง๊ธ ์ธ๋ฑ์ค๊ฐ ์ซ์์ด๊ณ ๋ค์ ์ธ๋ฑ์ค๋ ์ซ์์ผ๋๋ 10
scores[cnt]=10;
}
else{
// ์ง๊ธ ์ธ๋ฑ์ค๊ฐ ์ซ์์ด๋ฏ๋ก score์ ์ ์ฅ
scores[cnt]=dartResult.charAt(i)-'0';
}
cnt++;
}
if(dartResult.charAt(i)=='D'){
scores[cnt-1] =scores[cnt-1]*scores[cnt-1];
}
if(dartResult.charAt(i)=='T'){
scores[cnt-1] =scores[cnt-1]*scores[cnt-1]*scores[cnt-1];
}
if(dartResult.charAt(i)=='*'){
if(cnt==1){
scores[cnt-1]*=2;
}
else {
scores[cnt-1]*=2;
scores[cnt-2]*=2;
}
}
if(dartResult.charAt(i)=='#'){
scores[cnt-1]*=-1;
}
}
for(int score:scores) answer+=score;
return answer;
}
}
Code ์ค๋ช
๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ์ซ์์ผ ๊ฒฝ์ฐ์ D,T์ธ๊ฒฝ์ฐ(S๋ ๊ทธ๋๋ก์ด๊ธฐ๋๋ฌธ์ ์ ์ธ), *,#์ธ๊ฒฝ์ฐ๋ฅผ ๋๋์ด์ ์๊ฐํ๋ค.
๋จผ์ ์ซ์์ผ ๊ฒฝ์ฐ์ ์ ๊ฒฝ์จ์ผ ํ๋ ๊ฒฝ์ฐ๋ ์ซ์๊ฐ 10์ผ ๊ฒฝ์ฐ์ด๋ค. ์ซ์๊ฐ 10์ผ๊ฒฝ์ฐ ์ง๊ธ ์ธ๋ฑ์ค๊ฐ ์ซ์์ด๊ณ ๋ค์ ์ธ๋ฑ์ค๊ฐ ์ซ์์ผ๋๋ 10์ธ ๊ฒฝ์ฐ๋ฐ์ ์์ผ๋ฏ๋ก score์ 10์ ๋ฃ์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๊ธ ์ธ๋ฑ์ค๊ฐ ์ซ์์ด๊ณ ์ด์ ์ธ๋ฑ์ค๊ฐ ์ซ์์ด๋ฉด ์ด ๊ฒฝ์ฐ๋ 10์ด๊ธฐ ๋๋ฌธ์ continueํด์ฃผ์ด ๋ค์์ผ๋ก ๋๊ฒจ์ค๋ค. ๊ทธ๋ฆฌ๊ณ cnt๋ฅผ ์ด์ฉํด์ ์ง๊ธ ํ์ฌ score๋ฅผ ๊ธฐ์ตํด์ค๋ค.
D, T์ธ ๊ฒฝ์ฐ๋ score[cnt-1]๋ฅผ ๊ฐ๊ฐ ์ ๊ณฑ๊ณผ ์ธ์ ๊ณฑ์ ํด์ค๋ค.
*์ธ ๊ฒฝ์ฐ ๋งจ ์ฒ์ ์ซ์์ธ ๊ฒฝ์ฐ์ ๋๋จธ์ง ๊ฒฝ์ฐ ์ฒซ ์ซ์๋ฉด ๊ทธ ์ซ์๋ง 2๋ฐฐํด์ฃผ๊ณ ์๋๋ผ๋ฉด ๊ทธ ์ ์ซ์๊น์ง 2๋ฐฐ๋ฅผ ํด์ค๋ค.
#์ธ ๊ฒฝ์ฐ ํด๋น ์ธ๋ฑ์ค๋ง -1๋ฅผ ๊ณฑํด์ค๋ค
๋ฐฐ์ด์
์ธ๋ฑ์ค ๋ฒ์๋ฅผ ์ข ์ ๊ฒฝ์จ์ ํด์ผ ๋ฐํ์ ์๋ฌ๊ฐ ์๋จ๊ณ , ๊ฒฝ์ฐ์์๋ฅผ ๊ผผ๊ผผํ ์๊ฐํด์ ์ฝ๋ฉํด ์ฃผ์ด์ผํ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์ง์ ๊ตฐ ์ถ์ฒํ๊ธฐ (0) | 2021.08.27 |
---|---|
[Algoritm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ท ์์ด๋ ์ถ์ฒ (0) | 2021.07.28 |
[Algoritm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์์ฐ (0) | 2021.07.23 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2021.07.20 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (1) | 2021.07.18 |