[ Algorithm ] 백준 2292번 : 벌집 - [JAVA]

Minsu Lee·2023년 2월 15일
0

baekjoon

목록 보기
5/16
post-thumbnail

🎆백준 4673번 셀프 넘버🎆


📌문제

🔍문제 설명

문제링크: https://www.acmicpc.net/problem/2292

🔍예제 입력

13

🔍예제 출력

3


📌풀이

🔍풀이 설명

수학적 사고를 이용한 문제였다.
벌집이 중앙에 있는 방에서 멀어질 때마다 갖게 되는 패턴을 분석하였다. 우선 i레벨(중앙에서 거쳐야하는 방의 수)의 방들은 중앙에서 i칸 멀어지면 6*(i-1) 칸의 방을 갖게 된다.

		//벌집은 중앙에서 한 칸 멀어질수록 (멀어진 칸 수=i)*6개의 크기를 갖게 된다.
        for(int j=1; j<=i*6; j++){
            if(beeCount==N){
                b = false;
                break;
            }
            beeCount++;
        }

이것은 2번 방부터 적용된다(1인 경우 중앙이기 때문에 방이 1개).

🔍코드

import java.io.BufferedReader;
import java.io.InputStreamReader;

//벌집
public class p2292 {
    public static void main(String[] args)throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int beeCount = 2; //벌집 방 count, N과 비교
        boolean b = true;
        int i=1; //멀어진 칸 수

        while (b){
            //1인 경우는 항상 1칸
            if(N==1){
                break;
            }

            //벌집은 중앙에서 한 칸 멀어질수록 (멀어진 칸 수=i)*6개의 크기를 갖게 된다.
            for(int j=1; j<=i*6; j++){
                if(beeCount==N){
                    b = false;
                    break;
                }
                beeCount++;
            }
            i++;
        }

        System.out.println(i);
    }
}

👋마무리👋

전에 풀어본 느낌의 문제였고 벌집에서 각 방들이 모두 육각형인 점을 고려해서 패턴을 찾으려고 노력했던 것 같다..! 재밌는 문제~!

profile
빙글빙글

0개의 댓글