오늘은 2292번 문제를 풀어보겠습니다.
1. 중앙의 방 1부터 시작함
2. 숫자 N이 주어졌을 때 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지
3. ex) 13까지는 3개. 58은 5개를 지난다.
문제 풀이 및 소스코드
1. 규칙을 보면 각 0층일 때는 1
2. 1층일 때는 6
3. 2층일 때는 12
4. 3층일 때는 18 이런 식으로 쭉쭉 증가합니다. 이런 것이 제일 힌트네요?
바로 소스코드를 보시겠습니다. 부족한 부분을 소스를 보면서 채워보도록 하죠.
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n; // ex) 13입력
int sum = 2;
int layer = 0; // 층
if (n == 1) // n이 1이면 layer는 1
layer = 1;
while (n >= sum) // 13 >= 2 --- 1, 13 >= 8
{
sum += 6 * (layer++); // 2 = 6 * 0(layer)(후위 layer1),
// 2(sum) = 6 *1(layer)(후위2), 8(sum) = 6 * 2(layer)(g후이 = 20
// 후위 연산자 이기 때문에 while에 들어갔기 때문에 layer은 3이 됩니다.
}
cout << layer << endl;
return 0;
}
전위 후위는 위에 사진을 보시면 될 것 같네요. 감사합니다
'알고리즘' 카테고리의 다른 글
백준 11021번 A + B -7 C++ 문제 풀이 (0) | 2020.05.14 |
---|---|
백준 알고리즘2869번 - 달팽이는 올라가고 싶다 C++ 문제풀이 (0) | 2020.04.16 |
백준알고리즘 1712 - 손익분기점 c++ 문제풀이 (0) | 2020.04.15 |
백준 - 10870 c++ 풀이 및 설명 (0) | 2020.04.11 |
나머지 연산 (0) | 2020.04.10 |