λͺ¨μ μ¬μ (with.Java)
λͺ¨μ μ¬μ (with.Java) λ¬Έμ μ λνμ¬ μμλ³Έ κΈμ λλ€.
μ½λ© ν μ€νΈ λ¬Έμ λ₯Ό νλ©°, νμλ λ¬Έμ μ λν νκ³ λ₯Ό ν΄λ³΄κ³ μ ν©λλ€.
λ¬Έμ μ λν΄ λ¨Όμ μμλ³΄κ² μ΅λλ€.
λ¬Έμ
μ¬μ μ μνλ²³ λͺ¨μ βAβ, βEβ, βIβ, βOβ, βUβλ§μ μ¬μ©νμ¬ λ§λ€ μ μλ, κΈΈμ΄ 5 μ΄νμ λͺ¨λ λ¨μ΄κ° μλ‘λμ΄ μμ΅λλ€.
μ¬μ μμ 첫 λ²μ§Έ λ¨μ΄λ βAβμ΄κ³ , κ·Έλ€μμ βAAβμ΄λ©°, λ§μ§λ§ λ¨μ΄λ βUUUUUβμ λλ€.
λ¨μ΄ νλ wordκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ΄ λ¨μ΄κ° μ¬μ μμ λͺ λ²μ§Έ λ¨μ΄μΈμ§ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- wordμ κΈΈμ΄λ 1 μ΄μ 5 μ΄νμ λλ€.
- wordλ μνλ²³ λλ¬Έμ βAβ, βEβ, βIβ, βOβ, βUβλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
μ μΆλ ₯ μμ
word | result |
---|---|
βAAAAEβ | 6 |
βAAAEβ | 10 |
βIβ | 1563 |
βEIOβ | 1189 |
λ¬Έμ μ λν λμ νμ΄
import java.util.ArrayList;
class Solution {
static ArrayList<String> list;
static String[] words = {"A", "E", "I", "O", "U"};
public int solution(String word) {
int answer = 0;
list = new ArrayList<>();
dfs("", 0);
int size = list.size();
for (int i = 0; i < size; i++) {
if (list.get(i).equals(word)) {
answer = i;
break;
}
}
return answer;
}
static void dfs(String str, int len) {
list.add(str);
if (len == 5) return;
for (int i = 0; i < 5; i++) {
dfs(str + words[i], len + 1);
}
}
}
νμ΄ μ€λͺ
- word: μ°Ύκ³ μ νλ λ¬Έμμ΄
- answer: κ²°κ³Όκ°μ μ μ₯νλ λ³μ
- λ¨μ΄λ€μ λͺ¨λ μ‘°ν©μ μμ±ν ν, μ£Όμ΄μ§ λ¬Έμμ΄μ΄ λͺ λ²μ§Έλ‘ λμ€λμ§ νμΈνμ¬ λ°νν©λλ€.
- DFS νμμ ν΅ν λ¨μ΄ μμ±
- dfs λ©μλλ₯Ό ν΅ν΄ λ¨μ΄μ λͺ¨λ μ‘°ν©μ μμ±ν©λλ€.
- νμ¬ λ¬Έμμ΄ strμ κ°κ°μ λͺ¨μμ μΆκ°νμ¬ λ€μ λ 벨μ λ¬Έμμ΄μ μμ±ν©λλ€.
- DFS νμμ ν΅ν΄ λͺ¨λ μ‘°ν©μ μμ±νκ³ , μ΄λ₯Ό listμ μ μ₯ν©λλ€.
- μ£Όμ΄μ§ λ¬Έμμ΄μ΄ λͺ λ²μ§Έλ‘ λμ€λμ§ νμΈ
- μμ±λ λͺ¨λ μ‘°ν©μ νμΈνμ¬ μ£Όμ΄μ§ λ¬Έμμ΄κ³Ό μΌμΉνλ κ²½μ° ν΄λΉ μΈλ±μ€λ₯Ό λ°νν©λλ€.
κ²°λ‘
μ΄λ κ² μ½λλ DFS νμμ ν΅ν΄ μ£Όμ΄μ§ λͺ¨μμΌλ‘ ꡬμ±λ λ¨μ΄λ€μ λͺ¨λ μ‘°ν©μ μμ±νκ³ , μ£Όμ΄μ§ λ¬Έμμ΄μ΄ λͺ λ²μ§Έλ‘ λμ€λμ§λ₯Ό μ°Ύμ΅λλ€.