1. 문제에 대하여 📦
(1) 조건 분석 📊
A~UUUUU까지의 단어가 사전 순으로 정렬되어 있을 때 인수로 들어오는 단어는 순서 상 몇 번인지 출력하라.
2. 코드가 나오기까지 🛠️
KEY WORD: 중복 순열, 정렬
문자가 5개 이하라 중복 순열 사용해도 시간 초과가 나지 않을 것 같았다.
따라서 다음과 같이 풀었다.
- 모든 중복 순열 구하기 (5개 중 1개 뽑기, 2개 뽑기… 5개 뽑기)
- 정렬
- 원하는 값의 index 출력
(1) 시간복잡도 분석 ⏳
전체 문자 개수가 5개 이하라서 중복 순열을 사용해도 괜찮다.
3. 코드 🌐
(1) SUDO CODE 💬
의사 코드는 위의 풀이 설명과 같아서 생략
(2) JAVA CODE ☕
import java.util.*;
class Solution {
static String s;
static ArrayList<String> list = new ArrayList<>();
public int solution(String word) {
s = "AEIOU";
for(int i = 1; i <=5; i++){
duple_permutation(i, 0, new char [5]);
}
Collections.sort(list);
return list.indexOf(word) + 1;
}
public void duple_permutation(int r, int depth, char [] answer) {
if(depth == r) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < r; i ++){
sb.append(answer[i]);
}
list.add(sb.toString());
return;
}
for(int i = 0; i < s.length(); i++){
answer[depth] = s.charAt(i);
duple_permutation(r, depth+1, answer);
}
}
}
4. 트러블 슈팅 or 배운 점📝
0