본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 2292번: 벌집 -C++

728x90

[백준알고리즘] 2292번: 벌집 -C++

2292번: 벌집 (acmicpc.net)

 

2292번: 벌집

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

www.acmicpc.net

이 문제도 좀 쉽다 보니 다른 분들의 코드를 보니 다양하게 풀 수 있는 문제라고 생각한다.

 

다만 입력 숫자의 범위가 10억까지 들어올 수 있으니 int 형이나 unsigned int 형으로는 처리할 수 없다. 따라서 64비트를 처리하기 위해 uint64_t (unsigned long long)을 사용했다.

 

#include <iostream>

int main(void)
{
	uint64_t n;
	std::cin >> n;

	if (n == 1)
	{
		std::cout << 1;
		return 0;
	}

	uint64_t start, end, step;
	start = end = step = 1;
	while(!(start < n && n <= end))
	{
		start = end;
		end += (step * 6);
		step++;
	}

	std::cout << step;

	return 0;
}

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90