Post

08. Python(벌집)

08. Python(벌집)

[toc]

벌집

문제

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


제출

1
2
3
4
5
6
7
num = int(input())
room = 1
rst = 1
while room < num:
    room += 6 * rst
    rst += 1
print(rst)
1
2
13
3
1
2
58
5

인사이트

  • 간단한 알고리즘이지만, 문제를 해결하는 방식이 참신해서 기록함.

  • 중앙의 1을 고정하고, 그 주위 첫 번째 원에 6개의 값, 두 번째 원에 12개의 값이 들어가는 것을 보고 규칙을 발견함.

  • 6 x n의 방이 계속 추가되는 것을 확인함.

  • 그러나 주어진 num 값까지 최단 거리를 찾을 때, 첫 번째 방을 포함한 최단 거리를 고려해야 함.

  • 첫 번째 방(1이 있는 방)을 포함하기 위해 room 변수의 값을 1로 설정.

  • 결과 값인 rst의 값을 첫 번째 방을 형성하기 위해 1로 설정.

  • room 값이 num 값을 포함하는 원의 최대 값이 되도록 설정하는 것을 명심해야 함