코딩/Python

[Python] 백준 1789 수들의 합

도아죻아 2022. 11. 14. 21:20
반응형

코드 작성

import math
s = int(input())
m = int(math.sqrt(2*s))
while m*m+m > 2*s:
    m -= 1
print(m)

코드  풀이

#1

서로 다른 n개의 자연수의 합을 구하기 위한 공식은 n(n+1)/2 = s 이다.

따라서 n(n+1) = 2s라고 하고 s가 주어졌을 때 n을 구하는 방법이다.

문제에서 요구하는 것은 n의 최대값이므로, while문 작성시 m*m+m > 2s로 작성하여 m이 2s보다 작아질 때까지 m을 1씩 감소시키며 m의 값을 찾는다.

제곱근(sqrt)함수를 쓰기 위해서 math모듈을 불러오고, 초기 m의 값을 실제 m의 값과 가장 근접한 값을 구하기 위해 sqrt(2s)로 작성하였다.

 

반응형