https://school.programmers.co.kr/learn/courses/30/lessons/84512
문제 설명
알파벳 모음 A, E, I, O ,U만 사용해 만들 수 있는 길이 5이하의 모든 단어 수록됨.
사전에서 첫번째 단어는 A, 그 다음은 AA, 마지막 단어는 UUUUU.
단어 하나 word가 매개변수로 주어질때, 이 단어가 사전에서 몇번째 단어인지 return.
word | result |
---|---|
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
생각
[A, E, I, O, U] 로 완전 탐색해 단어 만들기.
단어가 만들어지는 기준은
A, AA, AAA, AAAA, AAAAA 그 다음
AAAAE, AAAAI, AAAAO, AAAAU 그 다음
AAAE ... 이다.
주어진 word가 사전에서 몇번째 인지 구하려면 사전을 만드는 함수가 필요하다.
근데 사전을 만드는 기준을 잘 모르겠다.
풀이
굳이 규칙을 찾지말고, 그냥 1~5개까지 가능한 조합의 모든 단어를 생성 후 사전에 저장한다, 그 다음 word가 해당 사전에서 몇번째 인지 구하면 된다!
recur(String cur, int maxLeng)
정답코드
import java.util.*;
class Solution {
String[] mo = {"A", "E", "I", "O", "U"};
List<String> dic = new ArrayList<>();
public int solution(String word) {
int answer = 0;
// 1. 알파벳 조합 생성
recur("", 5);
// 2. word의 인덱스+1 반환
return dic.indexOf(word)+1;
}
private void recur(String cur, Integer maxLeng){
if(cur.length()>0){
dic.add(cur);
}
if(cur.length() == maxLeng){
return;
}
for(String m: mo){
recur(cur+m, maxLeng);
}
}
}
자바에서 []와 {}는 배열과 관련하여 서로 다른 목적으로 사용
대괄호 []:
배열 선언: 변수가 배열임을 나타냅니다.
예: int[] numbers;
배열 요소 접근: 배열의 특정 인덱스에 접근할 때 사용합니다.
예: numbers = 1;
중괄호 {}:
배열 초기화: 배열의 요소들을 나열할 때 사용합니다.
예: int[] numbers = {1, 2, 3, 4, 5};
다차원 배열 초기화: 중첩된 중괄호를 사용합니다.
예: int[][] matrix = {{1, 2}, {3, 4}};
[]는 배열의 타입 선언하거나 요소 접근할 때 사용합니다.
{}는 배열의 내용을 초기화할 때 사용합니다.
배열을 선언하고 초기화할 때는 두 가지를 함께 사용합니다:
타입[] 변수명 = {요소1, 요소2, ...};