[BOJ] 1789번: 수들의 합

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


1부터 N까지의 합은 N*(N+1)/2입니다. N*(N+1)/2 <= S < (N+1)*(N+2)/2인 N을 생각하면 이 때 이러한 N은 조건을 만족하는 최대의 값이 됩니다.


S가 그리 크지 않아서 N이 아무리 커봐야 100000 아래이기 때문에 그냥 1부터 선형으로 찾아가도 되고, 혹시 S가 나중에 많이 커지게 되면 이진탐색을 이용해도 됩니다. 저는 N^2+N <= 2S임을 이용해 N = sqrt(2S)를 초기값으로 지정한 후 선형으로 찾아갔습니다.


https://github.com/encrypted-def/BOJ/blob/master/1789.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 11055번: 가장 큰 증가 부분 수열  (0) 2018.01.03
[BOJ] 1987번: 알파벳  (0) 2018.01.03
[BOJ] 1927번: 최소 힙  (0) 2018.01.03
[BOJ] 11057번: 오르막 수  (0) 2018.01.03
[BOJ] 1991번: 트리 순회  (0) 2018.01.03
[BOJ] 1753번: 최단경로  (0) 2018.01.03
  Comments