Algorithm
Algorithm | 백준 Kotlin 6443 애너그램
si8ae
2023. 9. 23. 22:27
6443번: 애너그램
첫째 줄에 단어의 개수 N 이, 둘째 줄부터 N개의 영단어가 들어온다. 영단어는 소문자로 이루어져 있다. 단어의 길이는 20보다 작거나 같고, 애너그램의 수가 100,000개 이하인 단어만 입력으로 주
www.acmicpc.net
private fun main() {
fun dfs(alphabet: IntArray, length: Int, str: String) {
if (str.length == length) {
println(str)
return
}
for (i in alphabet.indices) {
if (alphabet[i] > 0) {
alphabet[i]--
dfs(alphabet, length, str + (i + 'a'.code).toChar())
alphabet[i]++
}
}
}
repeat(readln().toInt()) {
val input = readln()
val alphabet = IntArray('z' - 'a' + 1)
input.forEach { alphabet[it - 'a']++ }
dfs(alphabet, input.length, "")
}
}