[백준/파이썬] 2292번 벌집 풀이

업데이트:



문제 정보


풀이

문제

위의 그림과 같이 육각형으로 이루어진 벌집이 있다.

그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.

숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

  • 자세한 문제 및 입출력 예제는 상단의 문제 출처(백준 홈페이지)를 참조해주세요

코드

n = int(input())-2

pt=1
step=6
while(n>=0):
    pt += 1
    n -= step
    step += 6

print(pt)

설명

규칙성을 발견해내면 쉬운 문제입니다.

벌집은 육각형 구조로 되어있으므로 하나의 방을 6개의 방이 둘러싼 형태를 갖게 됩니다.

가장 중앙의 방이 1일 때, 1번째 둘레는 총 6개의 방으로 구성되어있고, 2번째 둘레는 12, 3번째는 18… n번째 둘레는 n*6개의 방으로 구성되어 있음을 알 수 있습니다. 여기서, 방향은 관계 없으므로 목적지가 몇번째 둘레에 있는지만 구해낸다면, 바로 답을 알 수 있습니다. 반복문 외에 수열로도 풀 수 있을 것 같네요. 일반항을 구해서 푼다면 더 빨리 구할 수 있을 것입니다.



댓글남기기