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

Kotlin] 백준 2292번 문제풀이

by 김마리님 2023. 6. 16.

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

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

 

 

풀이

더보기

방을 보면 

1번을 기점으로 2번째 줄은 2 ~7까지 6개, 3번줄은 8~19개까지 12개, 4번줄은 20~37개로 6 * n으로 늘어나는걸 볼 수 있다.

따라서, 방 숫자를 받으면 방 숫자를 더하면서 찾아야 한다. 만약 선을 넘었다면 브레이크를 밟아야(?) 하므로 while문을 돌면서 전체 룸 수가 내가 찾아야 할 룸 수보다 많으면 반복문을 탈출하고, 아니면 다음번째 선으로 넘어가기 위해 카운트를 올린다. 이 때, 선의 갯수가 방을 통과하기 위한 최소갯수이다.

그리고 도착지점을 포함해야하므로 카운트에 +1 해야한다.

 

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

fun question2292() {
    var room = readLine()!!.toInt()

    var count = 0
    var allRoomCount = 1

    while (true) {
        allRoomCount += count * 6
        if(room <= allRoomCount) {
            break
        }
        count += 1
    }

    println(count + 1)
}

 

반응형