https://www.acmicpc.net/problem/2292
[풀이]
- 구현 및 규칙과 관련한 문제였습니다.
- 입력받는 수가 어떠한 범위에 있는지를 토대로 몇층에 있는지 계산하여야 합니다.
- 1이 입력되면 1개의 방을 지난다고 출력해야 합니다.
- 2부터 7까지는 2층에 있으며 2층에는 총 6개의 벌집이 있습니다.
- 8부터 19까지는 3층에 있으며 3층에는 총 12개의 벌집이 있습니다.
- 20부터 37까지는 4층에 있으며 4층에는 총 18개의 벌집이 있습니다.
- 38부터 61까지는 5층에 있으며 5층에는 총 24개의 벌집이 있습니다.
- 즉, 입력받는 수가 어느 범위에 속한느지 알게된다면 해당하는 층을 반환하면 됩니다.
- 그러므로, 층을 계산하는 count 변수를 하나씩 더하며 현재 층의 벌집의 개수 변수(num)를 전체 벌집 개수(totalNum)변수에 더하며 조건식을 진행하면 됩니다.
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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;
int num = 0;
int totalNum = 1;
while (true) {
if (N == 1) {
System.out.println(1);
return;
}
if (N <= totalNum) {
break;
}
num += 6;
totalNum += num;
count += 1;
}
System.out.println(count);
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 1406번 : 에디터(Java) (0) | 2021.10.30 |
---|---|
백준 9663번 : N-Queen(Java) (0) | 2021.10.24 |
백준 14502번 : 연구소(Java) (0) | 2021.10.24 |
백준 2468번 : 안전영역(Java) (0) | 2021.10.24 |
백준 10819번 : 차이를 최대로(Java) (0) | 2021.10.19 |