본문 바로가기
알고리즘/백준

백준 2292번 벌집 자바 java

by 클로드 2021. 4. 8.
반응형

문제

 

풀이

1 -> 1

2 -> 2 ~ 7 (6)

3 -> 8 ~ 19 (12)

4 -> 20 ~ 37 (18)

5 -> 38 ~ 61 (24)

해당 영역의 벌집 개수가 6씩 늘어나는 규칙을 찾을 수 있다

영역의 시작 값과 마지막 값을 계속 더하면서 찾으려는 N값에 범위까지 도달하면 출력하게끔 해서 해결하였다

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int start = 2;
        int end = 7;
        int plus = 6;
        int count = 2;
        int N = sc.nextInt();

        if (N == 1) {
            System.out.println(1);
            return;
        }

        while (true) {
            if (start <= N && end >= N) {
                System.out.println(count);
                break;
            }

            count++;
            plus += 6;
            start = end + 1;
            end += plus;
        }
    }
}

 

처음에는 6씩 증가하는 규칙을 찾아냈으나 수식이 있나 싶어서 계속 찾다가 시간을 많이 소비하였다

입력하는 N값이 1 <= N <= 1,000,000,000 여서 while로 하면 오래 걸리지 않을까?라는 생각을 했으나 막상 해보니깐 오래 걸리지 않았다

 

 

출처

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

반응형

댓글