728x90
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
package baekjoon;
import java.io.*;
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 count = 1; // 방의 개수(최소 1)
int range = 2; // 2~7, 8~19, 20~37, 38~61
if(N == 1) { // 입력받은 숫자가 1이면 방의 개수는 1로 출력
System.out.println(1);
}else {
while(range <= N) { // 범위가 입력받은 숫자 N보다 작거나 같을 동안 실행
range = range + (6*count);
// 2, 8(2+6*1), 20(2+8+6*2), 38(2+8+20+6*3), 61(2+8+20+38+6*4)...
count++; // 거쳐가는 방의 개수 +1
}
System.out.println(count);
}
}
}
- 입력받은 숫자가 1 ⇒ 1 출력
- 입력받은 숫자 N이 35라고 하자.
- range ≤ 35 를 만족할 때까지 실행한다.
- 2 ≤ 35
- range = 2, count = 1
- range = 2 + 6*1 = 8
- count = 2
- 8 ≤ 35
- range = 8, count = 2
- range = 8 + 6*2 = 20
- count = 3
- 20 ≤ 35
- range = 20, count = 3
- range = 20 + 6*3 = 38
- count = 4
- 38 ≤ 35 ⇒ 조건 불만족
- 2 ≤ 35
- count 출력
- range ≤ 35 를 만족할 때까지 실행한다.
'코딩테스트 > Baekjoon' 카테고리의 다른 글
[백준/JAVA] 2869번: 달팽이는 올라가고 싶다 (0) | 2023.08.16 |
---|---|
[백준/JAVA] 1193번: 분수 찾기 (0) | 2023.08.16 |
[백준/JAVA] 1712번: 손익분기점 (0) | 2023.08.16 |
[백준/JAVA] 2908번: 상수 (0) | 2023.08.16 |
[백준/JAVA] 1152번: 단어의 개수 (0) | 2023.08.16 |