STUDY_SEONMIN

2292. 벌집 본문

STUDY/Baekjoon Algorithm

2292. 벌집

Kululu_ 2021. 7. 7. 11:43

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

 

 

N = int(input())
n = 1

while N > (3*n**2-3*n+1):
    n += 1
print(n)

 

  • 중앙의 방부터 시작해서 n개의 방을 지나서 도착할 수 있는 방 중 가장 큰 방의 값은 $3n^2 - 3n + 1$입니다.

  • 따라서 임의의 방 번호 N이 주어졌을 때 몇 개의 방을 지나야 하는 가는
    $3(n-1)^2 -3(n-1) + 1 \lt N \le 3n^2 - 3n + 1$ 을 만족하는 n을 구하는 것으로 답을 알 수 있습니다.

  • while문의 실행 조건이 더 이상 만족하지 않는 다는 것은 위의 수식과 같은 의미가 되므로 이렇게 코드로 구현하였습니다.

'STUDY > Baekjoon Algorithm' 카테고리의 다른 글

2869. 달팽이는 올라가고 싶다  (0) 2021.07.07
1193. 분수찾기  (0) 2021.07.07
1712. 손익분기점  (0) 2021.07.07
1316. 그룹 단어 체커  (0) 2021.07.06
2941. 크로아티아 알파벳  (0) 2021.07.06
Comments