https://www.acmicpc.net/problem/1789
내 코드
N = int(input())
i=1
sol=0
isSolve = False
while True:
if N<i:
isSolve = True
break
if isSolve: break
N-=i
i+=1
sol+=1
print(sol)
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값을 구하는 문제이다. 최댓값을 구해야하므로 가장 작은 1부터 차례로 더해가야지 최대를 구할 수 있을 것 같아 이렇게 풀었다.
입력받은 N에 1부터 차례로 빼준다. 1부터 숫자가 1씩 커져야하니 변수 i로 두었다. N에 i를 계속 빼다가 N보다 i가 더 커지는 순간에 더할 수 있는 더 작은 숫자가 없는 것이기 때문에 이때 답을 구해주었다.
다른사람의 코드
s = int(input())
n = 1
while n * (n + 1) / 2 <= s:
n += 1
print(n - 1)
등차수열로도 풀수있다!
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #2606 - 바이러스 (0) | 2021.11.20 |
---|---|
[Python] 백준 #1303번 - 전쟁 - 전투 (0) | 2021.11.20 |
[Python] 백준 #14888 - 연산자 끼워넣기 (0) | 2021.11.18 |
[Python] 프로그래머스 - 최소직사각형 (0) | 2021.11.17 |
[Python] 프로그래머스 - 나머지가 1이 되는 수 찾기 (0) | 2021.11.17 |