다시 백준 시작!! 알고리즘 안한지 너무 오래돼서 쉬운 문제부터 시작했다.
문제: 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
해설: N이 최댓값이려면 최대한 1부터 연속적으로 더해야한다고 생각. 예제에서 주어진 200같은 경우는 18까지 연속적으로 더하고 남은 29를 더하는 식으로 구해야겠다고 생각. input인 s를 1~n까지의 합을 구하는 식을 역으로 풀어서 n를 구함p/2 는 1~n까지의 합, q/2 1~n+1 까지의 합 s가 그 사이에 있다면 답은 n이고 그것보다 크다면 답은 n + 1
import math
s = int(input())
n = int(math.sqrt(s * 2)) - 1
p = (n + 1) * n
q = (n + 2) * (n + 1)
if s >= p / 2 and s < q / 2:
print(n)
else :
print(n + 1)
추가로 .. 다 풀고 다른 사람들의 답을 보니까 그냥 1부터 n까지 더하는 방식으로 풀엇더라 ㅎㅋ 내가 너무 꼬아서 간듯