728x90
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
육각형 벌집이 주어지고 그중 주어진 방으로 가는게 최소 동선을 구하는 문제
# 2292번 문제 : 벌집
# 벌집같이 육각형으로 이루어진 모양에 중앙에 1번방부터 주어진 방까지의 최소루트로가면
# 몇개의 방을 거치는지 구하는 문제
room = int(input())
count = 0 # 반복문 횟수이자 1칸씩 전진의 의미
length = 1 # 벌집의 육각형 모양의 범위
while room > 0:
if(room <= length): # 육각형의 범위와 작거나 같으면 count출력(+1은 처음 방도 포함이기 때문)
print(count+1)
break
elif(room > length): # 범위보다 크면 다음 육각형으로 범위를 확장한다
count+=1
length+=count*6
# 1-7-19-37-61로 각 육각형의 끝숫자이고 6-12-18-24라는 6의 등차수열을 갖는다

이렇게 생긴 벌집이 주어져서 규칙을 먼저 찾았고 각 육각형의 범위가 1-7-19-37-61이며 그 차이는 6-12-18-24이고 이는 6의 등차수열임을 알수있었다 이를 토대로 풀이를 진행했고 시작인 1번방도 포함이기에 출력시 +1을 해주며 해결했다
728x90
'알고리즘' 카테고리의 다른 글
| 백준의 알고리즘 2908번 문제(python) (0) | 2021.07.03 |
|---|---|
| 백준의 알고리즘 10250번 문제(python) (0) | 2021.07.02 |
| 백준의 알고리즘 4153번 문제(python) (0) | 2021.06.30 |
| 백준의 알고리즘 3009번 문제(python) (0) | 2021.06.29 |
| 백준의 알고리즘 1085번 문제(python) (0) | 2021.06.28 |