[백준] 싸이클 (2526)(kotlin)

문제 설명

백준 2526번 문제 링크

입력 및 출력

» 입력

첫째 줄에 처음 시작하는 N과 P가 공백을 사이에 두고 주어진다. 단, 1<=N<=1,000, 2<=P<=97이다.

» 출력

첫째 줄에 반복되는 부분에 포함된 서로 다른 숫자의 개수를 출력한다.

예제 입출력(테스트케이스)

입력 출력
67 31 3

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (N, P) = readLine().split(" ").map { it.toInt() }
    val list = mutableListOf<Int>()
    
    while (true) {
        if (list.size != 0) {
            val next = (list[list.size - 1] * N) % P
            if (list.contains(next)) {
                println(list.size - list.indexOf(next))
                break
            } else {
                list.add(next)
            }
        } else {
            list.add((N * N) % P)
        }
    }
}