2292 벌집

Yohan Kim·2022년 6월 28일
0

문제

벌집모양으로 숫자를 전개해갈때, 몇개의 블록을 지나가야하는지 찾는 문제이다.

코드

import sys

n = int(sys.stdin.readline())
# 고리 끝값 1 7 19 37 61 -> 1 , 1+6 , 1+6+12, 1+6+12+18, ... 1+6+ ... + 6^n-1

current = 1 #현재 보고 있는 위치가 어떻게 되니
count = 1 #몇번째고리니
tmp = 1 #무슨 수를 더해야하니
while( n > current):
    current += 6*tmp
    tmp += 1
    count += 1
print(count)

풀이

고리의 끝자리 숫자에 규칙이 있어 쉽게 풀었다.
1-7-19-37-61 으로 전개해나가는 숫자의 다음항과의 차이는 6,12,18...으로 6의 배수이다.

즉 몇번째 마지막 수랑 비교해서 그 숫자보다 작으면 그만큼의 불록을 밟은게 되는 것이다.

n: 입력값
current: count 번째 고리의 최댓값
tmp: 다음항에 더해야하는 수의 1/6

profile
안녕하세요 반가워요!

0개의 댓글