본문 바로가기
알고리즘/구현(백준)

[2023-05-26] 2331 반복수열 (Kotlin)

by joh9911 2023. 5. 26.

 

문제 링크: https://www.acmicpc.net/problem/2331

 

2331번: 반복수열

첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.

www.acmicpc.net

 

10분 걸렸습니다.

 

 

package fiftysixth
import java.io.*
fun main(){
    val br = BufferedReader(InputStreamReader(System.`in`))
    val (num, p) = br.readLine().split(' ').map{it.toInt()}
    
    val arr = arrayListOf<Int>()
    arr.add(num)
	
    // p번 제곱한 값을 리턴해주는 함수
    fun square(num: Int, p: Int): Int{
        var i = 1
        for (index in 0 until p)
            i *= num
        return i
    }
    
    
    var idx = 0
    
    // 계속해서 배열에 계산한 값을 추가해가며
    // 배열에 추가할 값이 이미 배열에 있는 경우,
    // 이미 배열에 있는 값의 index를 구한 후 break
    while(true){
        val value = arr.last().toString()
        var sum = 0
        for (index in value.indices){
            sum += square(value[index].toString().toInt(), p)
        }
        if (arr.contains(sum)){
            idx = arr.indexOf(sum)
            break
        }
        arr.add(sum)
    }
    println(idx)
}

 

댓글