문제#
- 링크로 대체
풀이 및 주저리..
카카오 블라인드 문제중 쉬운 문제에 속하는 문제이다. 처음 풀 때 막혔던 부분은 10까지를 고려하지않아서 발생한 문제였다.. 그리고 그다음 발생한 문제는 *
이 나올 경우 그전의 계산값만 곱하기 처리를 해줘야하는데 전체에 적용하는 방식으로 문제를 풀어버린 것이다.. 최근에 SSAFY 교육과 개인적인 일들 때문에 알고리즘에 너무 소홀히하고 있는데.. 후에 본격적으로 알고리즘 교육이 시작될 때나 곧 다가오는 코테가 걱정이다. 좀 더 시간을 쪼개봐야겠다.
코드
package programmers.kakao.blind2018;
import java.util.Stack;
public class DartGame {
public int solution(String dartResult) {
int answer = 0;
Stack<Integer> answerStk = new Stack<>();
for (int i = 0; i < dartResult.length(); i++) {
char c = dartResult.charAt(i);
if (c >= '0' && c <= '9') {
if (c == '1') {
char next = dartResult.charAt(i + 1);
if (next == '0') {
answerStk.push(10);
i++;
continue;
}
}
answerStk.push(Character.getNumericValue(c));
} else if (c == '#') {
answerStk.push(answerStk.pop() * -1);
} else if (c == '*') {
Stack<Integer> tempStk = new Stack<>();
for (int j = 0; j < 2; j++) {
if (!answerStk.isEmpty()) {
tempStk.push(answerStk.pop() * 2);
}
}
for (int z = 0; z < 2; z++) {
if (!tempStk.isEmpty()) {
answerStk.push(tempStk.pop());
}
}
} else if (c == 'S') {
} else if (c == 'D') {
answerStk.push((int) Math.pow(answerStk.pop(), 2));
} else if (c == 'T') {
answerStk.push((int) Math.pow(answerStk.pop(), 3));
}
}
for (int i : answerStk) {
answer += i;
}
return answer;
}
}
기억에 남길 것!
- 문제좀 똑바로 읽기..