
내가 작성한 코드
import java.util.*;
class Solution {
public int solution(String word) {
int answer = 0;
String[] arr = {"A", "E", "I", "O", "U"};
int[] num = {781, 156, 31, 6, 1}; // 각 위치별 가중치합
List<String> list = new ArrayList<>(Arrays.asList(arr)); // 인덱스 = 각 문자 앞에 있는 문자의 개수
String[] words = word.split("");
// A로만 이루어진 경우 처리
if(word.replaceAll("A", "").length() == 0) {
return word.length();
}
// 현재 문자의 앞에 있는 문자의 개수 * 현재 위치 가중치합
for (int i = 0; i < words.length; i++) {
int sum = num[i] * list.indexOf(words[i]);
answer += sum;
}
return answer + words.length;
}
}
다른 사람의 코드
import java.util.*;
class Solution {
List<String> list = new ArrayList<>(); // 모든 규칙의 문자열을 담을 리스트
// 완전 탐색 >> 계속 반복하면서 규칙에 맞는 문자열을 list에 저장
void dfs(String str, int len) {
// 길이가 5이상일 경우 리스트에 담지 않음
if (len > 5) {
return;
}
list.add(str);
for (int i = 0; i < 5; i++) {
dfs(str + "AEIOU".charAt(i), len + 1);
}
}
public int solution(String word) {
dfs("", 0);
return list.indexOf(word);
}
}
Share article