반응형
<코드>
import java.util.*;
import java.util.PrimitiveIterator.OfDouble;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int layer = 1;
while (true) {
if(3*layer*(layer-1)+2 > N) {
System.out.println(layer);
break;
}
layer++;
}
}
}
풀이 방법
1번 방을 기준으로 1번 방을 0층이라고 한다면
2~7 => 1층
8~19 => 2층
20~37 => 3층
38~61 => 4층
62~91 => 5층
입니다.
각 층에서 가장 작은 수들을 살펴보면
2, 8, 20, 38, 62이며 각 수마다 +6, +12, +18, +24라는 규칙을 가지고 있습니다.
따라서 이를 등차수열 식으로 나타내 보면
층 = layer
각 층에서 가장 작은 수 = 3 * layer * (layer - 1) + 2입니다
따라서 층을 높여가면서 각 층에서 가장 작은 수가 처음으로 N을 넘어가는 층을 구하면 1~N번방까지의 거리를 구할 수 있습니다.
https://www.acmicpc.net/problem/2292
반응형
'🧩PS > 🥉Easy' 카테고리의 다른 글
[JAVA] 백준 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.10.03 |
---|---|
[JAVA] 백준 1193번 - 분수찾기 (1) | 2021.10.03 |
[JAVA] 백준 1712번 - 손익분기점 (0) | 2021.10.03 |
[JAVA] 백준 1316번 - 그룹 단어 체커 (1) | 2021.09.30 |
[JAVA] 백준 2941번 - 크로아티아 알파벳 (0) | 2021.09.30 |