정리

백준 1789번: 수들의 합 본문

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의 최댓값을 구한다.

아래는 파이썬 코드이다.

 

'Programming > 백준 BOJ' 카테고리의 다른 글

백준 1251번: 단어 나누기  (0) 2021.01.11
백준 1654번: 랜선 자르기  (0) 2021.01.05
백준 2493번: 탑  (0) 2020.10.12
백준 14488번: 준오는 급식충이야!!  (0) 2020.09.30
백준 2109번: 순회강연  (0) 2020.09.30
Comments