Programming/백준 BOJ
백준 1789번: 수들의 합
H.J.Park
2020. 12. 25. 03:05
백준 1789번: 수들의 합
1789번: 수들의 합
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
www.acmicpc.net
- 이분 탐색을 활용하여 풀면 되는 전형적인 문제이다.
- start = 1, end = s(입력받은 수)
- mid = (start + end) // 2
- 만약 (mid * (mid + 1) // 2) 가 s보다 작거나 같으면 answer에 mid를 저장하고 이분탐색을 계속 이어 나간다. 참고로, 여기서 (mid * (mid + 1) // 2) 는 1부터 mid까지의 합이다.
- 만약 (mid * (mid + 1) // 2) 가 s보다 크면 end = mid - 1 로 하여 mid 값을 줄인다.
- start가 end보다 작거나 같을 때까지 while문을 돌려서 answer의 최댓값을 구한다.
아래는 파이썬 코드이다.