[AtCoder] AtCoder Beginner Contest 324 D. Square Permutation

TaeGN·2024년 10월 29일

AtCoder

목록 보기
25/55

문제풀이

  1. 0부터 제곱수를 구하고, 각 자리수(0~9)의 개수를 S와 비교한다.

주의사항


소요시간

10분


package AtCoder.ProblemList.Difficulty800_1199.SquarePermutation

fun main() {
    val N = readln().trim().toInt()
    val S = readln().trim()
    val countArr = IntArray(10)
    S.forEach { countArr[it - '0']++ }
    val max = "1${"0".repeat(S.length)}".toLong()
    val curCountArr = IntArray(10)
    var i = 0L
    var result = 0L
    while (i * i <= max) {
        curCountArr.fill(0)
        val s = (i * i).toString()
        curCountArr[0] += S.length - s.length
        for (c in s) {
            curCountArr[c - '0']++
        }
        if (countArr.contentEquals(curCountArr)) result++
        i++
    }
    println(result)
}

문제링크

https://atcoder.jp/contests/abc324/tasks/abc324_d

0개의 댓글