Java/백준알고리즘

백준알고리즘 #2292 벌집 java

Sehyeok20 2020. 2. 17. 20:09
반응형

백준알고리즘 #2292 벌집

이번 문제는 위 그림처럼 벌집이 구성될 때, 중앙의 방 1에서부터 주어지는 n번째 방 까지의 최단거리를 구하는 문제다.

먼저 각 숫자들의 규칙을 찾아보자.

벌집은 정육각형이므로 가장 중앙의 1을 둘러싸는건 6개의 방. 그 6개의 방을 둘러싸는 건 12개의 방, 그다음은 18...

이런 형식으로 1+6n씩 증가한다.

다시말해 1부터의 거리는 2~7은 2, 8~19는 3, 20~37은 4... 이러한 식으로 증가한다.

코드를 작성해보면

백준알고리즘 #2292 벌집 코드

간단하다. n이 1인 경우만 제외하고, n에 6의 배수를 차례대로 빼서 그 값이 음수가 나올 때, 그 n이 몇번째 둘레에 있는지 알 수 있다. count를 1부터 시작한 이유는 처음 방과 목적지 방을 포함해야 하기 때문.

 

반응형