반응형
#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 |