본문 바로가기
Problem Solving/boj.kr (Python)

[BOJ / 파이썬] 2292 : 벌집

by hoiiiii 2022. 3. 13.

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

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

Sol )

  1. 중앙 1에서부터 cnt가 시작되기 때문에 초기값 1
  2. 처음 육각형 (2~7)과 다음 육각형 (8~19)의 크기 차이는 6.
  3. 최초 육각형 까지의 거리 = 6
  4. n이 1보다 클 동안 반복하면서 다음 껍질로 이동한다. 이동 1회에 움직일 수 있는 최대 범위(초기값 = 6) 씩 n에서 빼기.
  5. 한 껍질 바깥으로 이동할 때마다 거리는 6씩 증가, 이동 횟수(cnt)는 1씩 증가시킨다.
  6. n이 1보다 작다면 목표값까지 이동 가능한 횟수이기 때문에 그때의 cnt를 출력

소스코드 )

n = int(input())
i = 1
cnt = 1
if n == 1:
    print(1)
else:
    while n>1:
        cnt +=1
        n -= 6*i
        i+=1
    print(cnt)

댓글