코딩테스트 연습/백준

[백준] 2292번 : 벌집 in python 코드 및 설명

슈퍼짱짱 2019. 8. 24. 08:00
반응형

https://www.acmicpc.net/problem/2292




코드


1
2
3
import math
n=int(input())
print(+(n==1or int((3+math.sqrt(9-24+12*n))/6)+1)
cs




코드설명


입력 

결과 

 1

 2~7

 8~19

3

 20~37

 38~61

 ...

 


같은 결과를 가지는 입력의 가장 처음 숫자는


1 2 8 20 38 62 ... 이며 이는 계차수열이다.

* an이 입력값, n이 출력값이다.


*입력이 1인 경우는 따로 처리, a1 = 2로 시작한다.



계차수열의 일반항은 다음과 같다.


이때, bk는 등차수열이므로, bk의 일반항은 다음과 같다.


따라서 bk의 합은 다음과 같으며,


최종적으로 an의 일반항은 다음과 같다.


즉, an이 input일 때


의 해는 다음과 같다.


* 2차함수의 해



a1의 결과는 2, a2의 결과는 3 ... 이므로 최종 n+1로 출력한다.








반응형