백준 2292번

김경욱·2025년 8월 4일

백준

목록 보기
20/121

import java.util.Scanner;

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

    int number = in.nextInt();



    int[] goRoom = new int[18259];

    // goRoom은 값의 범위안에 개수

    goRoom[0] = 2;

    goRoom[1] = 8;

    goRoom[2] = 20;

    for (int i =0; i < 18258; i++)
    {
        goRoom[i+1] = goRoom[i] + 6*(i+1);
    }

    for (int i = 0; i< 18258; i++)
    {
        if (number < goRoom[i])
        {
            System.out.println(i+1);
            break;
        }
    }




    // 1 -> 방 1개 2~7 -> 방 2개 8~19 -> 방 3개 20~37 -> 방 4개  38~61 -> 방 5개.














}

}

숫자 범위에 따른 방의 개수를 체크한 후 그 경계숫자를 기준으로 잡은 후 규칙을 찾고 for문으로 식을 만들었는데 맨 처음에는 배열의 크기를 너무 크게 해서 메모리 오류가 발생하였다. 그래서 백준에 주어진 number의 범위를 확인 후 그 범위까지만 가능하게 만들어서 18259라는 숫자가 나왔다. 오랜만에 수학문제 푸는 기분이었다.

0개의 댓글