문제 URL:
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
다음 문제는 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지
(시작과 끝을 포함하여)를 계산하는 문제이다.
이 문제는 벌집이 일정한 숫자(6의 배수)만큼 증가하기 때문에 그 점을 이용하여 문제를 풀었다.
반복문 안에서 벌집이 증가한 수만큼 빼주는 코드를 작성하고,
n이 0이나 음수가 되기 전까지 반복문을 돌려 최소 개수의 방을 count에 저장해주었다.
#include<iostream>
using namespace std;
int main()
{
int count=0, x=1, n;
cin >> n;
while(n>0)
{
n = n-x;
count++;
if(x==1)
x = 6;
else
x = 6*count;
}
cout << count;
}