본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[백준 알고리즘/ C++] BOJ.2292 : 벌집

by 코코의 주인 2022. 1. 31.

문제

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

 

2292번: 벌집

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

www.acmicpc.net

 


풀이

자료구조

- int input : 입력
- int layer : 벌집 단 수
- int start : 시작 숫자
- int finish : 끝 숫자

알고리즘
-수학

 

설명

벌집이 1단, 2단, 3단 으로 커질 수록 위와 같은 규칙성을 가진다는 것을 찾아서 그 규칙성에 맞게 풀면 된다.

 


코드 

include <iostream>
using namespace std;

int main() {
    int input = 0;  //입력
    int layer = 1;  //단 수
    int start = 1;  //시작 숫자
    int finish = 1;  //종료 숫자
    
    cin >> input;
    
    while(!((input >= start) && (input <= finish))) {  //입력 값이 특정 단의 범위 안에 들어올 때까지
        start = finish + 1;  //start 값 변경
        
        if(layer == 1){  //1단에서 2단 갈 때는 예외 처리
            finish = start + 5;
        }
        else {
            finish = start + (6 * layer) - 1;  //finish 값 변경
        }
        layer++;  //layer 값 변경
    }
    cout << layer << "\n";
    return 0;

 


총평

수학 문제를 풀 때는 규칙성을 빠르게 찾아내는 것이 중요하다.

규칙성을 찾고 식을 세워서 코드를 짜면 쉽게 풀 수 있다.

 

 

댓글