본문 바로가기
알고리즘

BOJ_2292_벌집

by 도승이 2022. 3. 6.

문제 이름 : 벌집

문제 유형 : 수학

 

문제

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

입력

첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.

출력

입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.

예제 입력 1 복사

13

예제 출력 1 복사

3

 

수학문제로 구현은 쉽지만 풀이방법이 바로 보이지는않는다.

중앙에서 1칸에있는 육각형은 1개 존재, (자기자신)

중앙에서 2칸에있는 육각형은 6개 존재,

중앙에서 3칸에있는 육각형은 12개 존재

 

즉 1칸까지 1개, 2칸까지 7개, 3칸까지 19개가 존재한다 (전체 육각형 갯수)

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int N, i;
	cin >> N;
	//arr[0] = 1; //벌집의  중앙에서 0칸까지  1개 ('1')
	//arr[1] = 6; 벌집의  중앙에서 1칸까지  6개 ('2~7')
	/*
	arr[2] = 12;
	arr[3] = arr[2] + 6;
	arr[N] = arr[N-1] + 6;
	*/
	i = 0;
	int sum = 1;
	while(++i)
	{
		if(sum >= N) break;
		sum += i * 6;
	}
	cout<<i<<endl;
	return 0;
    
}

 

 

 

 

 

 

 

2292번: 벌집

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

www.acmicpc.net

 

'알고리즘' 카테고리의 다른 글

BOJ_1932_정수 삼각형  (0) 2022.03.06
프로그래머스_정수 삼각형  (0) 2022.02.22
BOJ 2096 내려가기  (0) 2022.02.20
프로그래머스 신규아이디 추천  (0) 2022.02.18
BOJ 2805 나무자르기  (0) 2022.02.14

댓글