BAEKJOON 2292번: 벌집

Kim Hyen Su·2023년 6월 22일
0

⏲️ 알고리즘

목록 보기
20/95

2292번 문제

문제

입력

첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.

출력

입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.

🗝️포인트

  • 규칙성을 묻는 문제.
  • 규칙
    1.벌집의 갯수가 라운드마다 6의 배수를 나타낸다.
    - 1round : 1, 2round : 6(no.2~7), 3round : 12(no.8~19) ...
    1. 입력값은 벌집의 누적 갯수를 의미하며, 최단거리는 라운드와 동일한 값이다.

    2. 계차수열의 일반항을 사용하여 값이 최단거리를 출력하였다.

      round는 1로 초기화, no.2 ~ ... 의 수열의 일반항.
      
      bn = 6n
      Sbn = n(6 + 6*n) / 2 = 3n(n+1)
      Sbn-1 = 3(n-1)(n-1 +1) = 3n(n-1)
      an = 2(a1) + Sn-1
      	= 2 + 3n(n-1)
          
      따라서, 일반항은 '2 + 3n(n-1)'

제출 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
	public static void main(String[] args) throws IOException {
    
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());

		int round = 1;

		while((3*round*(round-1))+2 <= N){
			n++;
		}

		System.out.println(n);
		br.close();
	}
}
profile
백엔드 서버 엔지니어

0개의 댓글