반응형

 

 

 

<코드>

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

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

반응형

+ Recent posts