문제
풀이
이 문제는 둘러싸고 있는 육각형을 지나 최단거리를 찾는 문제이므로 육각형으로 이루어진 벌집에 있는 규칙을 찾아내면 쉽게 풀 수 있는 문제입니다. 그림에서 중앙에 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;
}
}
}
'Algorithm > Python, C++' 카테고리의 다른 글
백준 1193_분수찾기[C++] (0) | 2022.01.25 |
---|---|
백준 2869_달팽이는 올라가고 싶다[C++] (0) | 2022.01.24 |
백준 1712_손익분기점[C++] (0) | 2022.01.22 |
백준 15596_정수 N개의 합[C++] (0) | 2022.01.21 |
백준 4673_셀프 넘버[C++] (0) | 2022.01.20 |
댓글