[Python] 백준/BOJ - 1789번: 수들의 합

2021. 11. 25. 02:11·Algorithm/Problem Solving
반응형

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

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

 

문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최대값은 얼마일까?

 

입력

S(1 <= S <= 4294967295)

 

출력

자연수 N의 최댓값

 

예제 입력 1

200

 

예제 출력 1

19

 

풀이

최대한 많은 서로 다른 수를 이용해 그 합들이 S가 되게 하기 위해서는 1부터 더해가는 것이 좋다. 예를 들어 S가 7일 때 1+2+3+1=7일 때가 N이 최대가 될 수 있다. 하지만 1이 중복되었으므로 1+2+4=7로 N=3일 때 최대이다.

이렇게 생각하면 복잡하다고 생각할 수 있지만 1+2+...+n의 합이 S를 넘지 않는다는 것만 이용하면 N의 갯수를 구하는 것은 간단하다. 위의 예시에서도 1+2+3=6이지만 n=3일 때까지의 합이 S를 초과하지 않는 다는 것을 알 수 있다. 따라서 n까지의 합이 S보다 작고, 가장 근접할 때 N이 최대가 된다는 것을 알 수 있다. 

 

1+2+...+n까지의 합이 n*(n+1)/2인 것을 이용하면 간단히 해결할 수 있다.

num = int(input())

n = 0
while n * (n + 1) / 2 <= num:
    n += 1
print(n - 1)

간단히 위와 같이 구현해보았다. n*(n+1)/2의 값이 S값보다 작거나 같을 경우 n의 값을 1씩 증가시키며 비교한다. 이 때 n을 1 증가시켰는데 계산 값이 S보다 커지면 while문이 끝나기 때문에 print할때는 n-1을 출력해주면 된다.

반응형

'Algorithm > Problem Solving' 카테고리의 다른 글

[Python] 백준/BOJ - 1449번: 수리공 항승  (0) 2021.11.26
[Python] 백준/BOJ - 16953번: A -> B  (0) 2021.11.25
[Python] 백준/BOJ - 1931번: 회의실 배정  (0) 2021.11.17
[Python] 백준/BOJ - 1439번: 뒤집기  (0) 2021.11.17
[Python] 백준/BOJ - 2455번: 지능형 기차  (0) 2021.11.15
'Algorithm/Problem Solving' 카테고리의 다른 글
  • [Python] 백준/BOJ - 1449번: 수리공 항승
  • [Python] 백준/BOJ - 16953번: A -> B
  • [Python] 백준/BOJ - 1931번: 회의실 배정
  • [Python] 백준/BOJ - 1439번: 뒤집기
SH_Roh
SH_Roh
  • SH_Roh
    혼자공부끄적끄적
    SH_Roh
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • FE (39)
        • HTML, CSS (3)
        • Javascript (17)
        • React (11)
        • Next.js (4)
      • Network (1)
      • DevOps (4)
      • Git (1)
      • Trouble Shooting (24)
      • Algorithm (41)
        • Python (2)
        • Data Structure, Algorithm (7)
        • Problem Solving (31)
      • Education (23)
        • Elice AI Track (4)
        • Wanted Pre-Onboarding FE Co.. (19)
      • TIL (25)
      • Etc. (1)
        • 회고 (1)
        • 그냥저냥 (0)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
SH_Roh
[Python] 백준/BOJ - 1789번: 수들의 합
상단으로

티스토리툴바