728x90

🏆 목차.

  1. 문제
  2. 코드
  3. 풀이

 

🛒 문제

 

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

🎨 코드

 

#include<iostream>

using namespace std;

int main()
{
	int input = 0;

	cin >> input;

	int step = 1;
//1이면 스텝이 1
	if (input == 1) step = 1;

	for (int sum = 2; sum <= input; step++)
		sum += 6 * step;
        
	cout << step;
}

 

🎯 풀이

 

백준 2292번 벌집 문제도 특정한 패턴이 있어 이를 파악하면 비교적 간단하게 해결할 수 있습니다.

백준-2292번-벌집-이미지
백준 2292번 벌집 이미지

 

첫 번째 1번 벌집을 제외하고 이후부터 2~7번(6개), 8~19번(12개), 20~37번(18개)으로 한 스텝이 증가할 때마다 6개씩 증가하는 모습을 확인할 수 있습니다.

 

이를 코드로 구현했을때, 

 

for (int sum = 2; sum <= input; step++)
sum += 6 * step;

 

시작점인 1을 포함하기 위해 sum은 2로 초기화해주었습니다.

sum이 입력값보다 작거나 같은 동안 계속 반복되게 해 주었고,

sum은 6 * step 계산을 통해 증가합니다.

 

이를 통해 위 규칙대로 코드를 구현할 수 있게 됩니다. 

728x90

+ Recent posts