백준 algorithm
백준 2292 - 벌집
cosmohoo
2019. 9. 8. 00:00
반응형
그림을 그려보면 1의 숫자를 둘러싼 원이 계속 생기는 것을 볼 수 있다. 그 원에 속하는 숫자들까지는 거쳐가야 하는 횟수가 동일하다.
그 원들은 6의 배수로 크기가 커져 간다.
1(방의번호)=>1(거쳐야하는 횟수)
2~7 => 2
8~19 => 3
20~37 => 4
이런 방식이다.
그래서 나는 prev= 6*i +prev라는 식을 세워 방의 번호가 속하는 범위를 만들었다.
그 이후 i를 통해 몇번을 통해 그 방까지 갈 수 있는지 알아낼 수 있다.
#include <iostream>
using namespace std;
int main()
{
int cnt = 0;//지나가는 방의 갯수변수
int num=0;
int prev = 1;
cin >> num;
for (int i = 1; i < 1000000000; i++)
{
prev = (6 * i) + prev;
if (num == 1)
{
cnt = 1; break;
}
else if (num <= prev)
{
cnt = i + 1;
break;
}
}
cout << cnt<<'\n';
return 0;
}
반응형