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 |