https://www.acmicpc.net/problem/2292
์ค์์ 1์์๋ถํฐ, ๋จ์ด์ง ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ
๋จ์ด์ง ๊ฑฐ๋ฆฌ 1 = layer 1
๋จ์ด์ง ๊ฑฐ๋ฆฌ 2= layer 2
..
๋จ์ด์ง ๊ฑฐ๋ฆฌ5 = layer5 ๋ผ๊ณ ๋๋ค.
์ด๋, ๋ฒ์ง ๋ฐฉ์ ์ซ์๋ฅผ N์ด๋ผ ํ๋ฉด
layer | N | ๋ฐฉ์ ๊ฐ์ |
---|---|---|
1 | 1 | 1 |
2 | 2~7 | 6 |
3 | 8~19 | 12 |
4 | 20~37 | 18 |
5 | 38~61 | 24 |
์ดํ ์๋ต
์ด์ ์ฃผ์ด์ง๋ N์ด ์ด๋ ๋ฒ์์ ์ํ๋์ง ์์์ผ ํ๋ค.
๊ฐ ๋ ์ด์ด์์, ์ต๋ ๋ฒ์๋ 1, 7, 19, 37, 61 ๋ก ๊ฐ๊ฐ 6, 12, 18, 24์ฉ 6์ ๋ฐฐ์๋ก ํญ์ด ์ฆ๊ฐํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก while๋ฌธ ์์์
//#2992 ๋ฒ์ง
#include <iostream>
using namespace std;
int main(void) {
//์
์ถ๋ ฅ ์๋ ํฅ์
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int N;
int layer = 1; // ํ์ฌ ๋ ์ด์ด
int layermax = 1; //ํ์ฌ ๋ ์ด์ด์ ์ต๋ ๋ฒ์
int tmp = 1; // 6*(tmp)๋ฅผ ํ์ฌ tmp๋ฅผ ๋๋ ค๊ฐ๋ฉฐ 6์ ๋ฐฐ์๋ฅผ ๊ตฌํจ
cin >> N;
while (1) {
// ํ์ฌ ๋ ์ด์ด์ ์ต๋ ๋ฒ์๋ณด๋ค N์ด ์์์ง ๊ฒ์ฌ
if (layermax >= N) {
cout << layer; // ์๋ค๋ฉด ํ์ฌ ๋ ์ด์ด์ ์ํ ๊ฒ์ด๋ฏ๋ก ์ถ๋ ฅ
break;
}
// N์ด ํ์ฌ ๋ ์ด์ด์ ์ต๋ ๋ฒ์๋ณด๋ค ํฌ๋ค๋ฉด ๋ ์ด์ด๋ฅผ ์ฆ๊ฐ
layer++;
layermax += 6 * (tmp); // ๋ ์ด์ด์ ์ต๋ ๋ฒ์๋ 6์ ๋ฐฐ์๋ก ์ฆ๊ฐ
tmp++;
}
}