Algorithm/BOJ
[BOJ] 2292번 : 벌집 (JAVA/자바)
SseopE
2022. 3. 10. 19:38
문제
알고리즘 고민
패턴을 확인하기 위해 경계로 나누어지는 숫자를 확인하였다.
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);
}
}