혜랑's STORY

[BOJ_C++] 2292번 : 벌집 본문

무지성 공부방/알고리즘 해결

[BOJ_C++] 2292번 : 벌집

hyerang0125 2021. 8. 22. 17:39

code

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h> 

using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, pos; cin >> n;
	
	pos = 1;
	for (int sum = 1; sum < n; pos++) {
		sum += 6 * pos;
	}

	printf("%d", pos);

	return 0;
}
1 : 1번
2 ~ 7 : 2번 (+) 6
8 ~ 19 : 3번 (+) 12
20 ~ 37 : 4번 (+) 18
38 ~ 61 : 5번 (+) 24
  • 벌집에서 방을 지나가는 수를 보면 6, 12, 18, 24 순으로 증가하면서 지나가는 방의 수가 늘어나는 것을 볼 수 있다.
  • 따라서 sum에 6*pos를 한 값을 더하며 n보다 작을 때 까지 for문을 진행한다.
  • 이때 pos는 지나는 방의 수가 된다. 주의할 점은 경계값(7, 19, 37, 61 등)이 포함되지 않도록 주의해야 한다.

결과