PS/BOJ

[Python] 1789번 수들의 합

s_omi 2024. 7. 14. 09:21
728x90
반응형
SMALL

✏️ 문제

 

문제 파악

N개가 최대가 되어야 하므로 = S가 제일 많은 개수의 자연수로 이루어져야 하므로 제일 작은 자연수(1)부터 S에서 빼가면서 구해주면 된다.

 

알고리즘

  • 수학
  • 그리디 알고리즘

 

 

코드

  • while 사용
s = int(input())
start = 1
n = 0

while True:
  if s < start: # s < start가 되는 순간 s -= start 후의 s 값이 자연수가 되지 않음 (조건 미성립)
    break
  else:
    s -= start 
    start += 1  # 서로 다른 자연수이므로  
    n += 1

print(n)

 

  • for 사용
s = int(input())
n = 0

for i in range(1, s+1):
  if s < i:
    break
  else:
    s -= i 
    n += 1

print(n)

 

 

 

728x90
반응형
LIST

'PS > BOJ' 카테고리의 다른 글

[Python] 1541번 잃어버린 괄호  (0) 2024.07.14
[Python] 2217번 로프  (2) 2024.07.14
[Python] 10988번 팰린드롬인지 확인하기  (0) 2024.04.21
[Python] 2444번 별 찍기 - 7  (0) 2024.04.21
[JAVA] 15650번 N과 M (2)  (1) 2024.02.11