728x90
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
풀이
서로 다른 N개의 자연수의 합이 S 일 때 자연수 N의 최댓값을 구해야 한다.
서로 다른 N개의... 뭐? 싶은데 초등학생 때 배운 공식이 있다.
S = n(n+1)/2
S 를 6라고 해보자
2S = n(n+1)
12 = n(n+1)
n = 3
그럼 최댓값은 3이 되는 것이다.
이걸 while 문으로 계속 반복해보자.
n = 1
while n*(n+1)/2 <= S :
n += 1
n 값이 1개씩 커지면서 n(n+1)/2이 S와 같을 때를 찾는다.
찾으면 여기서 n-1을 해주면 최댓값을 구할 수 있다.
코드
S = int(input())
n = 1
while n*(n+1)/2 <= S :
n += 1
print(n-1)
728x90
'🥧 Python > ⚙️ 코딩테스트' 카테고리의 다른 글
[백준-Python] 10039번: 평균 점수 (0) | 2023.02.15 |
---|---|
[백준-Python] 2753번: 윤년 (0) | 2023.02.15 |
[백준-Python] 11653번: 소인수분해 (0) | 2023.02.15 |
[백준-Python] 9498번: 시험 성적 (0) | 2023.02.15 |
[백준-Python] 2935번: 소음 (0) | 2023.02.15 |