Giken Dev
article thumbnail
반응형

https://www.acmicpc.net/problem/2292

 

2292번: 벌집

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

www.acmicpc.net

 

문제

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

입력

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

출력

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sum_hexagon(int _n) {	//벌집의 최대값을 반환
	int sum = 1;

	for (int i = 0; i <= _n; i++ ) {
		sum += 6 * i;
	}
	return sum;
}


int main() {
	int a;
	int i;	//sum_hexagon에 입력할 값. 육각형 한 변의 점의 개수

	scanf("%d", &a);

	for (i = 1; !(sum_hexagon(i - 2) <= a && a <= sum_hexagon(i - 1)); i++) {
		//비어있음
	}

	printf("%d", i);
}

문제풀이

벌집의 최대값을 반환하는 함수를 작성했습니다. 그리고 비어있는 for문을 활용해서 범위에 포함되는 i의 값을 구하고 출력했습니다.

ex) 13 입력 후 3이 출력되는 경우: 1 + 6*1 <= 13 <= 1 + 6*1 + 6*2

비고

교과서의 수학 문제에서 함수를 굉장히 많이 사용하듯이, 실생활의 수학문제를 코딩할때도 함수는 매우 중요해보입니다.

반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!