반응형
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n, var = 1, count = 1;
scanf("%d", &n);
while(1) {
if (n <= var) { printf("%d", count); break; }
var += (6 * count);
count++;
}
return 0;
}
처음 봤을 때 감이 안잡혔던 문제였다. 정답률에 쫀 것도 있다. 문제에 절대 쫄지말자.
n^2? 6n? 규칙을 찾아보려 해도 잘 보이지 않아 벌집 자체를 파헤쳐보았다.
1번루프/2번루프/3번루프/4번루프 · · ·
2~7 / 8 ~ 19 / 20 ~ 37 / 38~61 · · ·
여기서 숫자의 개수에 규칙이 숨어있는데
루프마다 6 x 1 / 6 x 2 / 6 x 3 / 6 x 4 · · ·
즉 6n만큼 증가한다.
두 번째로 최단거리를 구하는 것인데
알고보면 각각의 루프에 해당하는 수에 도달하는데의 최단거리는
반드시
루프의 번호 + 1에 해당한다.
사실 첫 번째 규칙은 찾았는데 이 규칙을 못찾아서 헤맸다.
문제에 쫄아서 너무 어렵게 생각했다..
반응형
'Baekjoon' 카테고리의 다른 글
[C]백준 2869번 : 달팽이는 올라가고 싶다 (0) | 2023.01.19 |
---|---|
[C] 백준 1193번 : 분수찾기 (0) | 2023.01.19 |
[C] 백준 1712번 : 손익분기점 (0) | 2023.01.18 |
[C] 백준 2675번 : 문자열 반복 (0) | 2023.01.15 |
[C] 백준 10809번 : 알파벳 찾기 (0) | 2023.01.15 |