위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
🔎 풀이
육각형을 구성하는 블럭들의 개수를 세어보았다.
중앙으로부터 2개를 지나는 줄의 육각형 개수는 6개,
중앙으로부터 3개를 지나는 줄의 육각형 개수는 12개,
중앙으로부터 4개를 지나는 줄의 육각형 개수는 24개 ...
숫자를 입력받은 뒤 6, 12, 24, ... 순서로 차를 계산하고, 결과값이 1 이하일 때 계산한 횟수를 출력한다.
💻 코드
n = int(input())
i = 6
count = 1
while n > 1:
n -= i
i += 6
count += 1
print(count)