본문 바로가기
Algorithm Trainning/백준 알고리즘(BEAKJOON)

백준 : 2292번, 벌집

by newbie22 2021. 6. 29.

문제 주소 : https://www.acmicpc.net/problem/2292

정답 비율 : 45.510% (2021.06.29 15:20 기준)

 

2292번: 벌집

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

www.acmicpc.net

 

문제 풀이 : 

각 원을 기준으로 가장 큰 수를 표로 정리하면 다음과 같습니다.

C1 C2 C3 C4 C5 ...
1 7 19 37 61 ...

 

이를 자세히 보면 규칙이 있습니다.

C1 : 1 + 6 * 0

C2 : C1 + 6 * 1

C3 : C2 + 6 * 2

C4 : C3 + 6 * 3

 

이를 정리하면 벌집 중앙 1번 방에서 x번 거쳐 지나서 갈 수 있는 최대의 방 번호는 Cx = Cx-1 + 6 * (x - 1)이 됩니다.

 

따라서 N번째 방이 주어질 때 해당 방까지 지나가는 방의 개수는 각 1 ~ n번 거쳐 지나서 갈 수 있는 최대의 방 번호와 비교하면 구할 수 있습니다.

 

코드는 다음과 같습니다.

#include<stdio.h>

int main(void){	
	int num = -1, max_room = 1;

	scanf("%d", &num);

	for (int i = 0; ; i++) {
		max_room += i * 6;
		if (num <= max_room) {
			printf("%d", i + 1);
			break;
		}
	}
	return 0;
}

'Algorithm Trainning > 백준 알고리즘(BEAKJOON)' 카테고리의 다른 글

백준 : 10757번, 큰 수 A+B  (0) 2021.07.26
백준 : 7576번, 토마토  (0) 2021.07.05
백준 : 3273번, 두 수의 합  (0) 2021.06.28
백준 : 8980번, 택배  (0) 2021.06.27
백준 : 11399번, ATM  (0) 2021.06.26