본문 바로가기

알고리즘

[백준][KOTLIN] 9461 파도반 수열

728x90

 

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

풀이

  1. 주어진 1부터 10까지 결과에 대한 규칙을 찾는다 : P(N) = P(N - 2) + P(N - 3)
  2. 입력이 100일 경우 Int Data 범위를 넘어서기 때문에 LongArray 를 배열로 선언한다.

코드

import java.io.*

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    val T = br.readLine().toInt()

    repeat(T) {
        val N = br.readLine().toInt()
        val dp = LongArray(N + 1)

        for (i in 1..N) {
            if (i == 1 || i == 2 || i == 3) {
                dp[i] = 1 
            } else {
                dp[i] = dp[i - 2] + dp[i - 3]   
            }
        }

        bw.write("${dp[N]}\n")
    }

    bw.flush()
    bw.close()
    br.close()
}
728x90