시배's Android
Algorithm | 백준 Kotlin 6443 애너그램 본문
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, "")
}
}
'Algorithm' 카테고리의 다른 글
Algorithm | 백준 Kotlin 5548 행성 탐사 (0) | 2023.10.07 |
---|---|
Algorithm | 백준 Kotlin 3273 두 수의 합 (0) | 2023.10.07 |
Algorithm | 백준 Kotlin 2553 마지막 팩토리얼 수 (0) | 2023.09.23 |
Algorithm | 백준 Kotlin 1158 요세푸스 문제 (0) | 2023.09.23 |
Algorithm | 백준 Kotlin 1965 상자넣기 (0) | 2023.09.16 |