🧠 Algorithm/[JAVA] Programmers
[84512번] 모음사전
0_ch4n
2022. 7. 7. 14:05
반응형
✔️ 문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
더보기

✔️ 입출력 예

입출력 예 #1
사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA", "AAA", "AAAA", "AAAAA", "AAAAE", ... 와 같습니다. "AAAAE"는 사전에서 6번째 단어입니다.
입출력 예 #2
"AAAE"는 "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU"의 다음인 10번째 단어입니다.
입출력 예 #3
"I"는 1563번째 단어입니다.
입출력 예 #4
"EIO"는 1189번째 단어입니다.
✔️ 제한 사항
- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
✔️ 코드 구상
모음만으로 만든 단어는 A, AA, AAA, AAAA, AAAAA, AAAAE, AAAAI ... 순서이다.
중복조합으로 모음으로 만들 수 있는 모든 경우의 수를 문제에서 예시로 준 순서처럼 만든 후
word를 찾아서 발견된 인덱스를 반환하면 쉽게 풀릴 것이다.
✔️ 코드
import java.util.*;
class Solution {
public int solution(String word) {
int answer = 1;
String[] s = {"A","E","I","O","U"};
List<String> cases = new ArrayList<>();
String[] bucket = {"", "", "", "", ""};
getAllCase(cases, s, bucket, 0);
for (String str : cases) {
if(str.equals(word)) {
break;
}
answer++;
}
return answer;
}
public void getAllCase(List<String> list, String[] s, String[] bucket, int index) {
if(index >= s.length) {
return;
}
for(int i = 0; i < s.length; i++) {
bucket[index] = s[i];
list.add(toString(bucket));
getAllCase(list, s, bucket, index + 1);
}
bucket[index] = "";
}
public String toString(String[] arr) {
String temp = "";
for (String str : arr) {
temp += str;
}
return temp;
}
}
📄 원문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형