본문 바로가기
  • 기록
알고리즘

[C++] 백준 2292번: 벌집

by juserh 2022. 2. 25.

문제 이해하기

저런 그림이 나오는 문제를 보면 긴장되어 머리가 굳는건지, 그냥 문제가 어려운건지...문제가 잘 안 읽힌다. 벌집 안에 숫자들의 규칙은...첫번째 1 벌집을 1모임, 1벌집 둘러싼 벌집들의 모임을 2모임, 차례로 뒤에도 3모임, 4모임 등으로 이름 붙이면 1모임에는 벌집 1개, 2모임에는 벌집이 총 6개, 3모임에 속한 벌집은 총 12개, 4모임에는 18개, 5모임에는 24개로 6의 배수로 늘어난다는 것이다. 이것을 바탕으로 문제를 풀면 된다.

그럼 입력한 숫자가 몇번째 모임인지 알면 바로 그게 답이다.

 

코드로 표현하기

#include <iostream>

using namespace std;

int main() {
	long n;
	cin >> n;

	long a = 1;
	int i = 1;
	while (a < n) {
		a += 6 * i;
		i++;
	}
	cout << i;
}

처음에 문제를 이해하는데는 오래 거렸지만 코드로 표현하니 짧아서 깜짝... a에 6의 배수배(i값을 하나씩 늘려가며 곱하여)로 6, 12, 18 등의 숫자를 더해가며 a와 n의 값을 비교하면서 n이 벌집에서 몇번째 모임에 속하는지 알아낸다.