1. 벌집의 개수 num는 1, 6, 12, 18... 6의 배수로 늘어난다.
2. 각 벌집은 6의 배수로 늘어나므로 1, 2~7, 8~19... 순으로 증가하는데 이를 이용한다.
3. 따라서 입력받은 숫자가 어느 벌집의 범위에 해당하는 지 알면 최단거리의 방 개수를 알 수 있다.
num은 주위 벌집의 개수이므로 cnt * 6, 이후 cnt++
range는 6의 배수로 늘어나는 벌집의 범위, 따라서 num을 더해주면서 늘려간다.
#include <iostream>
using namespace std;
int main(void) {
int n;
cin >> n;
int cnt = 1;
long long num = 1; // 주위 숫자 개수
long long range = 1;//주위 숫자 중 최대 수
while (range < n) {
num = 6 * cnt++;
range +=num;
}
cout << cnt;
return 0;
}
'PS > 백준' 카테고리의 다른 글
[C++] 백준 2110번: 공유기 설치 (0) | 2020.12.30 |
---|---|
[C++] 백준 10870번: 피보나치 수 5 (0) | 2020.12.27 |
[C++] 백준 2839번: 설탕 배달 (0) | 2020.12.26 |
[C++] 백준 7568번: 덩치 (0) | 2020.12.23 |
[C++] 백준 2231: 분해합 (0) | 2020.12.23 |
댓글