SMALL

https://www.acmicpc.net/problem/2292

 

2292번: 벌집

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

www.acmicpc.net


  • 문제


  • 문제풀이

이 그림을 보았을 때 가운데 방은 1이고 두번째 칸은 1~7, 세번째 칸은 8~19 이런식으로 방번호가 배정된다.

N번째 칸 방의 번호 해당수의 차이
1번째 칸 1  
2번째 칸 2~7 5
3번째 칸 8~19 11
4번째 칸 20~37 17
5번째 칸 38~61 23

해당수의 차이를 보면 6씩 차이가 나는 규칙을 찾을 수 있다.

1, 1+6*1, 1+6*2...과 같은 식을 만들 수 있다. 층을 높혀가면서 입력한 수와 칸에서 가장 높은 수를 비교하여

답을 찾을 수 있다.

 


  • 코드 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h> 


int main() {
	int N;
	scanf("%d", &N);

	int roomnum = 1;
	int layer = 0;
	while (1) {
		if (N <= roomnum) break;

		layer++;
		roomnum += 6 * layer;
	}

	printf("%d", layer + 1);
}

  • 후기

규칙은 빠르게 발견했다고 생각했는데 코드로 구현하려고 하니 너무 힘들었다. 고등학교때 무슨 수열이라고 배웠던 것 같은데 무엇인지 기억이 안난다...

LIST

'백준 > C언어' 카테고리의 다른 글

[C언어]백준 2563: 색종이  (0) 2023.01.28
[C언어]백준 2566번: 최댓값  (0) 2023.01.28
[C언어]백준 1712번: 손익분기점  (0) 2023.01.13
[C언어]백준 2525: 오븐시계  (0) 2023.01.05
[C언어]백준 1193번: 분수찾기  (0) 2023.01.05

+ Recent posts