백준 단계별로 풀어보기 [기본수학 1] 벌집
https://www.acmicpc.net/problem/2292
[풀이]
1을 level 0이라고 했을 때, level이 증가할 때 마다 6*level만큼 육각형 벌집이 증가한다.
각 level+1이 지나가는 방의 개수이므로 주어진 숫자 N에 대해서 몇 level에 속하는지를 계산하면 된다.
n이 1 + 6(1+2+3...+level)이랑 같거나 작아지는 level을 찾는다.
[코드]
#include <iostream>
int main(void) {
int num = 1;
int level;
int n;
std::cin >> n;
for (level = 0; ; level++) {
if (1 + 3 * level * (1 + level) >= n)
break;
}
std::cout << level + 1;
return 0;
}