알고리즘 연습

C++ 2292 벌집

728x90

#include <iostream>

using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int layer = 1;
	int room = 1;
	
	int roomN;
	cin >> roomN;
	while (roomN > room) {
		layer++;
		room += 6 * (layer - 1);
	}
	cout << layer;
}

 

처음에 확신하면서 정답을 작성했는데 틀렸고, 해답을 구하려 구글링을 했는데도 이해가 가지 않아서 계속 붙들어서 풀어냈다.

 

1층은 방이 1개, 2층은 7개, 3층은 19개... 방의 개수는 층마다 1+6( layer -1 ) 개씩 증가한다.

방 번호를 넣고 그 방이 있는 층을 알기 위해서는 층을 올라갈 때마다 layer에 1을 더하고, 층에 따라 방의 숫자를 추가해준다.

 

layer++;를 room+=6*(layer-1)보다 나중에 실행했을 때에는 틀렸다고 했다.

728x90

'알고리즘 연습' 카테고리의 다른 글

C++ 피보나치 수열  (0) 2021.09.27
C++ 2839 설탕배달  (0) 2021.09.27
C++ 2908 상수  (0) 2021.09.24
C++ 1157 단어공부  (0) 2021.09.24
C++ 1152 단어의 개수  (0) 2021.09.24