본문 바로가기
스터디(beakjoon)

Kotlin] 백준 2903번 문제풀이

by 김마리님 2023. 6. 16.

https://www.acmicpc.net/problem/2903

 

2903번: 중앙 이동 알고리즘

상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.

www.acmicpc.net

 

 

 

풀이

더보기

가만히 문제를 보면 쉬운데.. 변 하나만 보면

1번 -> 점 두개 사이에 점 하나를 콕 찍어야 한다.

2번 -> 점 세 개 사이에 2개를 콕

3번 -> 점 5개 사이에 4개를 콕

4번 -> 9개 사이에 8개 콕.

즉 연속되었지만 연결되지 않는 점 n개는 변 n-1을 만들고 변 위에 점을 찍기 때문에 최종적으로 찍히는 점음 n + n -1 이 된다.

그리고 이것이 끝이 아니라 수직인 변에도 동일하게 찍히기 때문에 그 점이 n + n - 1만큼 반복된다는 것을 알 수 있다

즉 (n + n - 1)^2 을 반복한다.

 

따라서 n을 전역변수로 두고 반복 횟수마다 n = n + n - 1을 하고, 반복이 끝나면 이를 제곱하면 된다.

 

import kotlin.math.pow

fun main(args: Array<String>) {
    question2903()
}

fun question2903() {
    var dot = 2

    var count = readLine()!!.toInt()

    for(i in 1 .. count) {
        dot = dot + dot - 1
    }
    println((dot.toDouble().pow(2)).toInt())
}
반응형