백준 문제풀이/수학(Math)

백준 온라인 저지 - 벌집(#2292) 파이썬

Itscool 2021. 7. 30. 10:45

문제설명

수와 도형에 관련된 문제는 규칙성을 찾는 것이 가장 먼저겠죠? 먼저,가장 작은 육각형을 육각형1 이라고 할 때, 육각형을 둘러싸고 있는 육각형들의 집합을 육각형2, 육각형3.. 순으로 보았습니다. 가장 작은 육각형은 1, 두번째는 2, 3, 4, 5, 6, 7, 세번째는 8, 9...19 를 담고 있는데요, 저는 육각형 집합에 포함된 가장 큰 숫자들에 주목했습니다. 몇번째 육각형 집합인지가 곧 시작점에서 육각형에 도달하는 최소이동거리가 되겠죠? 각 육각형 집합에 포함된 가장 큰 숫자는 1, 7, 19, 37.. 순으로 증가하고, 이것은 1, 1+6, 1+6+12, 1+6+12+18로 바꾸어 쓸 수 있습니다. 이것은 고등학교 수학시간에 배운 계차수열의 형태네요. 계차수열은 수열의 인접한 두 항에 대하여, 뒤 항에서 앞 항을 뺀 값을 계차라고 하는데, 원래 수열 계차들을 항으로 하는 수열을 원래 수열 계차수열이라고 합니다. 계차수열 공식은 하단 이미지를 참고하시면 됩니다. 

 

이 문제의 계차수열 일반항을 먼저 구해보면 a = 3*(k**2) - 3*k + 1가 나옵니다. 저는 while문으로 k값을 1씩 증가시키면서 n값이 a보다 작으면 k값을 출력하는 방식으로 코드를 구현하였습니다. 

 

벌집 #2292 파이썬 코드

n = int(input())
k = 1

while True:
  a = 3*(k**2) - 3*k + 1
  if n <= a:
    print(k)
    break
  k += 1