문제
문제링크
접근
- 가장 앞자리가 바뀔 때마다 아래 자리 수의 경우의 수 만큼 건너 뛰어야 한다.
- 예를 들어 A -> E로 갈때는 A를 가장 앞글자로 두는 모든 단어들을 건너뛰어야 한다. 그래서 4자리의 모든 경우의 수를 계산하고, 몇 칸 넘어가는지를 곱하면 된다.
- 모든 경우의 수는 제곱 연산의 합으로 구하였다.
- 각 자리 수마다 같은 연산을 반복하였다.
풀이
import java.util.*;
class Solution {
public int solution(String word) {
int answer = 0;
double currPart = 5 + Math.pow(5, 2) + Math.pow(5, 3) + Math.pow(5, 4) + Math.pow(5, 5);
for (int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
currPart -= Math.pow(5, 5-i);
if (c == 'A') answer += 1;
else if (c == 'E') answer += currPart + 2;
else if (c == 'I') answer += currPart * 2 + 3;
else if (c == 'O') answer += currPart * 3 + 4;
else answer += currPart * 4 + 5;
}
return answer;
}
}