ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 2292번 : 벌집 (Python, 파이썬)
    카테고리 없음 2018. 12. 31. 15:39

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


    문제에 힌트가 있다. 마지막에 '예를 들면, 13까지는 3개, 58까지는 5개를 지난다'라는 말이 있다. 임의의 숫자 ~ 13까지는 3개의 방을 지나고, 임의의 숫자 2 ~ 58까지는 5개를 지난 다라는 뜻이므로 해당하는 범위가 있다는 것이다. 입력하는 숫자가 특정 범위에 해당되면 범위에 해당되는 방 숫자를 출력하면 된다.

    규칙을 찾아보니 수열을 이룬다는 것을 알았다. 1, 7, 19, 37 ... 차수가 진행될 때마다 +6씩 늘어나는 수열이다. 입력 숫자가 1일 경우 방 1개를 지난다(시작을 포함하므로). 1보다 크고 7보다 작거나 같을 경우 방 2개를 지난다. 7보다 크고 13보다 작거나 같은 경우 방 3개를 지난다. 이런 식이다.

    이러한 규칙을 적용해서 코드를 작성해보면

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    N = int(input())

    first = 1

    plus = 6

    room = 1

    if N == 1:

    print(1)

    else:

    while True:

    first = first + plus

    room+= 1

    if N <= first:

    print(room)

    break

    plus += 6


Designed by Tistory.