본문 바로가기

코딩/Python

[Python] 백준 1789 수들의 합

반응형

코드 작성

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)로 작성하였다.

 

반응형

'코딩 > Python' 카테고리의 다른 글

[Python] 백준 1158 요세푸스 문제  (0) 2022.11.16
[Python] 백준 10872 팩토리얼  (0) 2022.11.15
[Python] 백준 10866 덱  (1) 2022.11.13
[Python] 백준 1110 더하기 사이클  (0) 2022.11.13
[Python] 백준 10951 A+B -4  (0) 2022.11.13