알고리즘/백준 알고리즘

[백준] 2292 - 벌집

TIM_0529 2022. 12. 30. 07:03
반응형
#include <iostream>
using namespace std;

int main()
{
	/*
		1		1		-> 1 block
		2 ~ 7		5		-> 2 block
		8 ~ 19		11		-> 3 block
		20 ~ 37		17		-> 4 block
		38 ~ 61		23		-> 5 block
	*/
	int address = 0, min = 0, max = 0;
	int block=0,max_add=0;
	cin >> address;
	if (address == 1) {
		cout << block+1;
		return 0;
	}
	min = 2;
	max = 1;
	while (true)
	{
		min += block*6;
		max += (block+1)*6;
		block++;
		if (address >= min && address <= max) {
			cout << block+1;
			break;
		}

	}



	return 0;
}

벌집에 공식을 찾으려고 했고 결과 6에 배수 만큼 더욱 커진다는 것을 알아내서 코드로 구현해서 정답을 맞았습니다.

 

다른사람들의 코드를 보겠습니다.

#include <cstdio>
int func(int x) {
	int n = 1;
	while (x >= 2 + 3 * n * (n - 1)) n++;
	return n;
}
int main() {
	int N = 0, G = 0;
	scanf("%d", &N);
	if (N == 1) G = 1;
	else G = func(N);
	printf("%d\n", G);
	return 0;
}

C 스타일에 코드로 더욱 간결하게 작성한 코드입니다.

func 함수에서 while 문을 통해 조건에서 바로 x 값이 입력한 값에 3에 배수보다 작다면 값을 Iterator 값을 리턴하도록 짠 코드로 보입니다.

C++14 이고 944KB 메모리를 사용하셨습니다.

반응형

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

[백준] 10926 - ??!  (0) 2022.12.31
[백준] 1193 - 분수찾기  (0) 2022.12.31
[백준] 1712 - 손익분기점  (0) 2022.12.30
[백준] 1316-그룹단어 체커  (2) 2022.12.29
[백준] 2941 - 크로아티아 알파벳  (2) 2022.12.29