주소 : https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num = 0;
int i = 1;
int lim1 = 1;
int lim2 = 1;
scanf("%d", &num);
while (1)
{
if (num == 1)
{
printf("1");
return 0;
}
else if (lim1 < num && lim2 >= num)
{
printf("%d", i);
return 0;
}
else
{
lim1 += (i - 1) * 6;
lim2 += i * 6;
i++;
}
}
}
마무리 : 그림이 나타나서 풀기가 겁났지만 규칙성을 찾은 이후로 쉽게 풀 수 있었던 문제이다. 시작과 끝을 포함하고 방을 지나가는 개수를 세야했기 때문에 방의 크기를 제한해야했다. 거기서 방의 크기를 제한할 규칙성을 찾은 것인데 그것은 방의 크기가 6배씩 늘어나는 것이다. 그래서 이를 이용하여 문제를 푼 것이다.
'백준 > C' 카테고리의 다른 글
백준 10250번 : ACM 호텔 [C] (0) | 2022.08.03 |
---|---|
백준 2798번 : 블랙잭 [C] (0) | 2022.08.03 |
백준 2231번 : 분해합 [C] (0) | 2022.08.02 |
백준 4153번 : 직각삼각형 [C] (0) | 2022.08.02 |
백준 1085번 : 직사각형에서 탈출 [C] (0) | 2022.08.01 |