Java - [백준] 2292 벌집
본문 바로가기
알고리즘 풀이/백준

Java - [백준] 2292 벌집

by IYK2h 2022. 9. 27.
728x90

벌집 모양을 보면

6, 12, 18, 24 ...

6*n씩 증가하는 수열이다.

그리고, 값의 범위도, 직전의 값 + 1 ~ 진전의 값 + (6*n) 이다.

값의 범위안에 있으면, 최단거리는 같은 n값을 가진다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
​
public class Main {
​
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
​
        int input = Integer.parseInt(bf.readLine());
        int s = 1;
        int n = 1;
        while(n < 166667) {
            if ( 1 == input) {
                System.out.println(s);
                return;
            }
            else if ( s < input & input <= s+(6*(n-1))) {
                System.out.println(n);
                return;
            }
            s = s+(6*(n-1));
            n++;
        }
    }
}

처음에 이렇게 작성을 하였으나, 범위를 지정하지 않아도 되게끔 수정하였는데

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
​
public class Main {
​
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
​
        int input = Integer.parseInt(bf.readLine());
        int s = 2;
        int n = 1;
        if ( 1 == input) {
            System.out.println(1);
        }
        else {
            while ( s <= input) {
                s = s+(6*(n));
                n++;
            }
            System.out.println(n);
        }
    }
}

벌집의 중앙값 1일때를 제외한 2부터 값이 시작되고, s+(6*n) 값이 input 값 보다 크면 값을 출력하게했다.

1

2~7

8~19

...

input 값이 20보다 크면 n값은 3이된다.

728x90

댓글