관리 메뉴

cococo-coding

2292번. 벌집 본문

[BOJ] 코드 모음/C_baekJoon

2292번. 벌집

_dani 2023. 11. 27. 16:15

최종코드

#include <stdio.h>

int main() {
    //1. n을 입력받는다
    //2. 입력된 n이 몇 개의 방을 지나는지 확인한다.
    //3. 방 개수를 출력한다. 

    //1
    int n;
    scanf("%d\n", &n);

    //2
    int sum=1; //6*0을 바로 sum에 넣어줌, 즉 while에서는 6*1부터 시작하면 됨
    int bang=1;
    
    while(1){
        if(n<=sum){ //3
        printf("%d\n", bang);
        break;
        } else {
        sum=sum+(6*bang);
        bang++;   
        }    
    }
    return 0;   
}

풀이

출처:  2292번: 벌집 (acmicpc.net)

중앙의 1번 방부터 시작하여 한 겹씩 방을 세어보자. 

그러면 각 중앙방부터 시작해서 6*0개, 6*1개, 6*2개 순으로 방이 늘어난다. 

이 방들이 누적되므로 고려하여 코드를 짜준다. 

 

우선은 while문으로 무한반복시켜주고

입력받은 n이 sum안에 포함되는 경우(작거나 같은 경우)에  반복문을 나오게 해주었다.

그게 아닌 경우에는 계속해서 6*bang을 누적해서 sum에 더해주었다.


느낀 점

 

레벨이 올라갈수록 단순구현에서 수학문제가 많이 나오는데, 이런 수학문제같은 경우에는 직접 하나씩 손으로 써가면서 하는 게 이해가 쉽다. 반복하다보면 보이는 패턴이 있는데 이를 단순화해서 정리해 알고리즘을 짜면 조금 더 쉽게 접근할 수 있다. 

 

2023.11.27

'[BOJ] 코드 모음 > C_baekJoon' 카테고리의 다른 글

2798번. 블랙잭  (0) 2023.11.27
1978번. 소수 찾기  (1) 2023.11.26
10250번. ACM 호텔  (1) 2023.11.23
1157번. 단어 공부  (2) 2023.11.23
2920번. 음계  (1) 2023.11.22