백준 2292_벌집[C++]
본문 바로가기
Algorithm/Python, C++

백준 2292_벌집[C++]

by liveloper jay 2022. 1. 24.

문제

 

 

풀이

 이 문제는 둘러싸고 있는 육각형을 지나 최단거리를 찾는 문제이므로 육각형으로 이루어진 벌집에 있는 규칙을 찾아내면 쉽게 풀 수 있는 문제입니다. 그림에서 중앙에 1번 육각형이 있고 2~7번까지 육각형이 1을 둘러싸고 있습니다. 그리고 그 바깥을 8~19까지 둘러싸고 있으며, 그 바깥을 20~37.....이런식으로 둘러쌓여 있습니다. 여기서 2~7은 6개, 8~19는 12개, 20~37은 18개.... 6의 배수만큼 커지는 것을 알 수 있습니다. 

이 원리를 이용하여 문제를 풀게 되면 A라는 숫자를 입력받게 되면 이 A는 1+6(n-1)<A<=1+6n 의 범위에 들어오게 되며 지나는 방의 개수는 n+1개가 됩니다. 

 

 

소스코드

#include<iostream>
using namespace std;

int main(){
 int n, room =1;
 cin >> n;
 for (int i = 0; i < n; i++)
 {
     room+=6*i;
     if(n<=room){
         cout << i+1;
         break;
     }
 }
}

 

 

 

댓글