본문 바로가기
Algorithm/📖Baekjoon

#2292 벌집

by yewoneeee 2024. 7. 22.

문제


 

코드


fun main() {
    var n = readln().toInt()
    var cnt = 1
    while (n > 1) {
        n -= 6 * cnt
        cnt++
    }
    println(cnt)
}

 

풀이


규칙이 1, 6, 12, 18, 24, ... 이런 식이다.

즉, 한 개의 방을 지나는 방 수는 1개,

두 개의 방 수를 지나는 방 수는 6개,

세 개의 방 수를 지나는 방 수는 12개.. 이런 식

 

지나가야하는 방의 개수가 같은 칸은 총 6의 배수 개라는 점이다

그래서 입력받은 숫자 칸으로 가려면 지나가야하는 방의 개수를 구하려면 0보다 작아질 때 까지 6의 배수를 계속해서 빼면 된다

여기서 1은 예외적으로 먼저 빼준다

36의 숫자를 예로 들면

36 - 1 - 6 - 12 - 18 < 0 

즉, 총 4개의 칸을 지남

 

fun main() {
    var n = readln().toInt() - 1
    var cnt = 1
    while (n > 0) {
        n -= 6 * cnt
        cnt++
    }
    println(cnt)
}

그래서 이런 식으로 작성했는데, n에 직접적으로 1을 빼는 것보다 while문에 n>1 조건으로 변경해주면 더 간결해질 것 같아서 수정했다

수정된 코드는 풀이 단락 위의 코드를 참고

'Algorithm > 📖Baekjoon' 카테고리의 다른 글

#11723 집합  (0) 2024.07.25
#1157 단어 공부  (0) 2024.07.23
#5073 삼각형과 세 변  (1) 2024.07.22
#23971 ZOAC 4  (0) 2024.07.22
#1655 가운데를 말해요  (0) 2024.07.20

댓글