프로그래머스 [1차] 다트 JAVA

sundays·2022년 9월 20일
0

문제

[1차] 다트

풀이

어쩐지 이상하게 오래걸리더라니 완전 다르게 문제를 해석해버렸다
점수를 구분해서 더해야 한다 왜냐면 바로 이전값을 참조하는 경우가 있어서 메모리를 따로 발행해야 하는데 전체 값에서 더해주고 곱해주고 난리였다

1S2D*3T 연산과정
1S -> 1^2
1S2D -> 1^1 2^2
1S2D* -> 1^1*2 2^2*2
1S2D*3T -> 1^1*2 2^2*2 3^3

바로 3번째 단계와 같은 경우에서 이전과 현재의 값을 둘다 *2 를 연산해주고 있다. 이런 경우에는 다른 값들을 저장소에 저장해줘야 하는데 이경우에는 인덱스로 연산을 해야 더 간단하게 연산이 가능 할 것이다
삽질을 한 내가 너무 사랑스러운 순간이었다

				if (x == 'S') {
                    score[index++] = (int) Math.pow(number, 1);
                } else if (x == 'D') {
                    score[index++] = (int) Math.pow(number, 2);
                } else if (x == 'T') {
                    score[index++] = (int) Math.pow(number, 3);
                } else if (x == '*') {
                    int j = (index - 2) < 0 ? 0 : index - 2;
                    for (; j < index; j++) {
                        score[j] *= 2;
                    }
                } else if (x == '#') {
                    score[index - 1] *= -1;
                }

이런 문제는 구현을 많이 해봐야하는것 같다. 문제좀 더 잘 읽고
나 처럼 성격이 급하면 이렇게 까지 삽질도 한다.

전체 코드

전체 코드

profile
develop life

0개의 댓글