문제

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

 

2292번: 벌집

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

www.acmicpc.net

 

주안점

1. 입력을 잘 보면 범위가 크므로 절대 배열을 사용하여 할당을 한 후에 해당 값을 찾으려 하면 안된다. => 수학적으로 해결

2. N이 1인경우 처리

 

 

구조

각 껍질(?)의 가장 큰 수는 6의 배수로 증가한다.

 

 

코드
#include<bits/stdc++.h>
using namespace std;

long long n;
long long ret = 1;
long long num = 1;

int main (){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin>>n;
    if(n == 1) {
        cout<<ret<<"\n";
        return 0;
    }
    while(num < n) {
        if(num == n) break;
        num += ret*6;
        ++ret;
    }
    cout<<ret<<"\n";
}

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

[백준] 1717번 : 집합의 표현  (0) 2021.12.22
[백준] 14716번 : 현수막  (0) 2021.12.15
[백준] 2636번 : 치즈  (0) 2021.11.09
[백준] 회의실 배정  (0) 2021.11.04
[백준] 부녀회장이 될테야  (0) 2021.11.03

+ Recent posts