2026.08.08
소요 시간: 1시간
시간 복잡도:
class Solution {
private String[] alphabet = { "A", "E", "I", "O", "U" };
private int ans = 0;
private int cnt = 0;
public int solution(String word) {
dfs("", word);
return ans;
}
private void dfs(String s, String word) {
if (s.length() == 5) {
return;
}
for (int i = 0; i < alphabet.length; i++) {
cnt++;
if ((s + alphabet[i]).equals(word)) {
ans = cnt;
return;
}
dfs(s + alphabet[i], word);
}
}
}
시간 복잡도:
코드 분석

수학적인 규칙을 사용하여 각 자릿수마다 가중치를 두고, 한번의 순회로 끝냄
class Solution {
public int solution(String word) {
int[] weight = { 781, 156, 31, 6, 1 };
String alphabet = "AEIOU";
int answer = 0;
for (int i = 0; i < word.length(); i++) {
answer += alphabet.indexOf(word.charAt(i)) * weight[i] + 1;
}
return answer;
}
}
기본적인 DFS 문제였는데
너무 어렵게 생각해서 이전에 풀었던 코드를 참고해서 해결했다.
수학적인 규칙을 찾으려 했으나, 찾지 못해서 DFS로 해결했다.