육각형으로 이루어진 벌집에 입력한 숫자가 몇 번째 테두리에 있는가?
처음에는 중앙에 있는 1까지 같이 포함을 하고 코딩을 하려고 했는데 처음부터 중앙에 있는 1을 빼고 진행을 하는게 더 좋을 것 같아서 시작할 때 입력을 받고 1을 빼주었다.
육각형 벌집층을 메모장에 적으면서 특성을 살펴보니 방이 커질수록 (6 X 방 크기)씩 일정하게 커지는 특성이 보였다. 그래서 반복문을 돌면서 방의 변수를 ++시켜주고 (6 X 방 크기)를 이용해서 점점 숫자를 크게 하면서 원하는 숫자에 다가갈 수 있도록 코딩을 했다.
반복문은 언제 끝날지를 모르는 상황이니 while을 쓰기로 처음부터 생각을 했지만 조건을 어떻게 걸어야 할 지를 고민했다. 처음에는 &&를 이용해서 ~~보다 크면서 ~~보다 작은 경우가 아닐 때까지 원하는 방의 크기를 검출을 하려고 했는데 너무 길기도 하고 제대로 진행도 되지 않아서 다시 처음부터 짰고, 단순히 while(입력 받은 수 < 커지고 있는 방 크기? )로 줄였고 안에 있는 부분도 단순히 더해주고 ++만 해주는 짧은 코드로 변경을 해서 더 효율성 있고 짧게 만들 수 있었다.
반복문 조건 및 전체 흐름에서 고민
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int Room = 1;
int hexagon = 6;
int Now = 0;
int N = 0;
scanf("%d", &N);
N = N - 1;
while ((N > Now))
{
Now = Now + (Room * hexagon);
Room++;
}
printf("%d\n", Room);
}