본문 바로가기
CodingTest

백준_2292번_벌집_자바

by Lcoding 2024. 2. 26.
반응형

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

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

이번 문제는 2292번 벌집 문제로 간단한 계산식이 필요합니다.

 

 

 

입력 사항 -  

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

 

출력 사항 -  

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

 

주의 사항  - 

입력 값이 1인 경우도 체크해야한다.

 

풀이 방식 -

문제에서 설명하는 방에 따른 숫자 증가량을 보면 아래와 같다.

1
7           +6
19        +12
37        +18
61        +24 ...

 

6의 다음 배수만큼 더하며 방의 수가 증가하기에

1 + (6*1) + (6*2) + (6*3) + (6*4)... 이러한 형태를 이룬다.

따라서 입력값이 1일땐 1을 출력하며, 그외에 경우엔 방을 하나 넘어갔을때의 최소값인 2부터 시작하여 

현재 최소값  + (방을 넘는 횟수 * 6)을 계산해주면된다.

 

로직 - 

import java.util.*;
import java.io.*;

public class Main {


    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int answer = 2;
        int cnt = 1;

        if( n ==1){
            System.out.println(cnt);
        }else {

            while (answer <= n){
                answer = answer+(cnt*6);
                cnt++;
            }

            System.out.println(cnt);
        }

    }

}

반응형

'CodingTest' 카테고리의 다른 글

백준_9655번_돌 게임_자바  (0) 2024.02.29
백준_1157번_단어 공부_자바  (1) 2024.02.27
백준_5073번_삼각형과 세 변_자바  (3) 2024.02.26
백준_23971번_ZOAC 4_자바  (3) 2024.02.26
백준_1436번_영화감독 숌_자바  (0) 2024.02.09

loading