알고리즘 연습/백준
[C++][수학1 - 벌집(2292)] 등차수열, 등차 수열 합, 수열 점화식
_h.j
2020. 8. 15. 15:20
728x90
[문제 간단 설명]
N(1 ≤ N ≤ 1,000,000,000)이 주어지면 1에서부터 몇 칸을 걸쳐야 갈 수 있는지 출력하기
예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
[소스 코드]
#include <iostream>
using namespace std;
int main(void){
int num,result=1;
cin >> num;
if (num == 1) {
cout << 1;
return 0;
}
while (3*result*result - 9 * result +8 <= num) {
result++;
}
cout << result-1;
return 0;
}
[문제 풀이 전략]
1.먼저 보기 쉽게 엑셀에 숫자를 써봤다.
2. 관계식을 뽑아 냈다.
벌집의 거리 별 관계식을 뽑아 냈다.
3. 그 다음 범위에 맞는 n을 찾아낸다.
이 과정이 조금 아쉽다. for문 말고 더 좋은 방법은 없을까??
다른 사람들의 풀이를 보니 관계식 찾고 for은 다 이렇게 했다.
어차피 이 문제의 핵심은 관계식 찾는 것
[공부한 것]
진짜 수열 점화식, 이 문제와 상관은 없지만 근의 공식 다 까먹었다.
기억이 안난다.
쓰다보니 옛날에 풀었던 기억이 났다.
출처/참고
728x90