Algorithm/BOJ

[BOJ] 2292번 : 벌집 (JAVA/자바)

SseopE 2022. 3. 10. 19:38

문제

백준 - 2292번


알고리즘 고민

패턴을 확인하기 위해 경계로 나누어지는 숫자를 확인하였다.

1

2 ~ 7

8 ~ 19

20 ~ 37

...

 

위 숫자들을 식으로 확인해보면

6 x 0 + 1

6 x 0 + 2 <= num < 6 x 1 + 2

6 x 1 + 2 <= num < 6 x 3 + 2

6 x 3 + 2 <= num < 6 x 6 + 2

 

6에 특정한 수를 곱해주는데 그 수는 1, 2, 3 처럼 증가하는 값이었다.

이를 이용해서 알고리즘을 작성하였다.

 

6 x val + 1 < 입력값 이라면 아직 도착을 하지 못한것으로 간주하고 반복한다.

더 해주는 값인 add 를 곱하는 val 변수에 더해주고 1 증가시킨다.


JAVA Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

        int num = Integer.parseInt(br.readLine());
        int multival = 0, add = 1;
        while (6*(multival)+1 < num) multival+=(add++);
        System.out.println(add);
    }
}