[문제 풀이]
수학과 완전탐색을 이용하여 문제를 풀었습니다.
모음사전 문제는 주어진 문자열이 AEIOU로 이루어진 사전의 몇번째로 등장하는지를 찾는 문제입니다. 문제를 풀 수 있는 방법은 여러가지가 있지만 수학, 완전탐색 두 가지 방법으로 풀어보았습니다.
수학으로 푸는 방법은 아래와 같습니다.
자리별 모음의 순번을 담은 배열을 생성합니다.
AAAAA ~ AAAAE 1
AAAA ~ AAAE (1*5) + 1 = 6
AAA ~ AAE (1*5+1) * 5 + 1 = 31
AA ~ AE ((1*5+1) * 5 + 1) * 5 + 1 = 156
A ~ E (((1*5+1)*5+1)*5+1)*5+1 = 781
해당 배열을 이용하여 자리 수 * index 수를 곱해서 더합니다.
완전탐색으로 푸는 방법은 아래와 같습니다.
DFS를 통해 만들 수 있는 모든 문자열을 list에 더 해준 후, list의 index를 구해줍니다.
[JAVA]
import java.util.*;
//수학
class Solution {
public int solution(String word) {
String str = "AEIOU";
int[] x = {781, 156, 31, 6, 1};
int index;
int result = word.length();
for(int i = 0; i < word.length(); i++){
index = str.indexOf(word.charAt(i));
result+= x[i] * index;
}
return result;
}
}
[JAVA]
import java.util.*;
class Solution {
ArrayList<String> dictionary = new ArrayList<>();
public int solution(String word) {
DFS("", 0);
return dictionary.indexOf(word);
}
void DFS(String str, int len){
if(len > 5)
return;
dictionary.add(str);
for(int i = 0; i < 5; i++)
dfs(str + "AEIOU".charAt(i), len + 1);
}
}
'algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스_조이스틱(JAVA) (0) | 2022.11.21 |
---|---|
프로그래머스_이중우선순위큐(JAVA) (0) | 2022.11.21 |
프로그래머스_피로도(JAVA) (0) | 2022.11.18 |
프로그래머스_H-Index(JAVA) (0) | 2022.11.17 |
프로그래머스_K번째수(JAVA) (0) | 2022.11.17 |