[백준 1789] 수들의 합

Junyoung Park·2022년 3월 3일
0

코딩테스트

목록 보기
172/631
post-thumbnail

1. 문제 설명

수들의 합

2. 문제 분석

서로 다른 자연수를 n개 더해서 s를 만들 때, 가장 큰 n을 구하는 문제다. 수학적 원리르 통해 손쉽게 풀 수 있다.

  • 서로 다른 수를 가장 많이 사용해 특정 수를 만드는 방법은 1+2+3+...+n이다. 이 식은 간단하게 n(n+1)/2n(n+1)/2인데, 이 합을 ss라고 할 때 nn에 대한 방정식은 n2+n2s=0n^2+n-2s=0이다. 이때 더 큰 수 nn을 구해야 하므로 근의 공식 중 큰 값에 round를 씌우자.

3. 나의 풀이

import sys

s = int(sys.stdin.readline().rstrip())
# 서로 다른 자연수를 최대한 많이 더해 자연수 s을 만들자.
# 1+2+...+n = n*(n+1)/2로 이때 사용되는 다른 수는 n개.

n = (-1 + (8*s + 1)**0.5) / 2
n = int(n)

print(n)
profile
JUST DO IT

0개의 댓글