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 값을 포함하는 원의 최대 값이 되도록 설정하는 것을 명심해야 함