728x90
https://www.acmicpc.net/problem/2292
문제
풀이방법
코드
/*
* 백준 - 단계별 문제풀이 : 기본수학1
* 2292번
*
* 벌집
* 위의 그림과 같이 육각형으로 이루어진 벌집이 있다.
* 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.
* 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서
* 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오.
*
*/
#include <iostream>
using namespace std;
int solution(int num) {
int a, b;
int n = 1;
if (num == 1) return 1;
while (true) {
a = 2 + 3 * n * (n - 1);
b = 1 + 3 * n * (n + 1);
if (num >= a && num <= b) break;
n++;
}
return n + 1;
}
int main() {
int num;
cin >> num;
cout << solution(num) << "\n";
}
궁금한 사항
다른 더 효율적인 방법이 없나
728x90
'Algorithm > BaekJoon' 카테고리의 다른 글
[2869] 달팽이는 올라가고 싶다 (0) | 2021.08.29 |
---|---|
[1193] 분수찾기 (0) | 2021.08.28 |
[15552] 빠른 A+B - ios_base::sync_with_stdio(false)와 cin.tie(null) (0) | 2021.08.27 |
[2741]N 찍기 - "\n" vs endl (0) | 2021.08.27 |
[14681] 사분면고르기 (nested if VS && ) (0) | 2021.08.27 |