핵심로직
1. 경로를 알 필요가 없고 도달한 곳까지의 최소거리를 구하면 되므로 껍질의 수를 세면 된다.
2. 껍질 마다의 범위를 책정하고 만약 N < i 번째 껍질
일 때 값을 출력한다.
위의 일반항을 구해서 풀면 된다. (아직 수학과 티를 못벗어난 듯 하다. 친구는 다르게 풀었던 것 같은뎁)
소스코드
#include <iostream>
#include <math.h>
using namespace std;
int N;
int result;
int main(void) {
cin >> N;
for (int i = 0;; i++)
{
if (N == 1)
{
cout << 1 << '\n';
break;
}
else
{
if (1+3*i*i+3*i >= N) {
result = i + 1;
cout << result << '\n';
break;
}
}
}
return 0;
}
'PS(Problem Solving) > soleved.ac CLASS' 카테고리의 다른 글
solved.ac CLASS 3 백준 1389 (0) | 2022.06.27 |
---|---|
백준 2579 (계단 오르기) (0) | 2022.05.09 |
solved.ac CLASS 2 백준 10250(ACM 호텔) (0) | 2021.10.19 |
solved.ac CLASS 2 백준 4153(직각삼각형) (0) | 2021.10.19 |
solved.ac class2 백준 1085번(직사각형에서 탈출) (0) | 2021.10.19 |