250x250
Notice
Recent Posts
Recent Comments
Link
멋쟁이v의 개발일지
[백준 1789번] 수들의 합(파이썬) 본문
728x90
320x100
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
예제 입력 1
200
예제 출력 1
19
풀이
이 문제는 자연수의 합이 주어질 때 서로다른 N개의 자연수들의 합으로 만들어 질 수 있는 N 갯수의 최댓값을 구하는 문제입니다.
예를 들어서 15가 주어졌을 때
14 + 1 = 15 (2개)
12 + 2 + 1 =15 (3개)
9 + 3 + 2 + 1 = 15 (4개)
5 + 4 + 3 + 2 + 1 =15 (5개)
서로다른 자연수들의 합으로 만들어 질 수 있는 갯수의 최댓값은 5개 입니다.
서로다른 N개의 자연수의 갯수는 1부터 시작하여 차례로 더했을 때의 갯수가 최댓값이 되겠습니다.
코드를 순서대로 작성한다면
1. 주어진 수와 비교할 변수와 +1씩 더해서 저장할 변수를 선언
2. While문을 통해 주어진 수보다 크거나 같아질 때까지 반복
3. 반복문안에 계산식 작성(코드 확인)
작성 코드
S = int(input()) sum = 0 i = 1 answer = 0 while S >= sum: # 더해진 수가 S보다 작거나 같을 때까지 반복 sum += i # sum에 차례로 i만큼 더해서 저장 i += 1 # 반복할 때마다 i는 1씩 증가 answer += 1 # 자연수 갯수 카운트 print(answer-1) # 마지막 While문까지 반복했으니 -1을 해주고 출력
728x90
320x100
'0년차 > 알고리즘(그리디)' 카테고리의 다른 글
[백준 10610번] 30 (파이썬) (0) | 2022.11.21 |
---|---|
[백준 13305번] 주유소(파이썬) (0) | 2022.11.17 |
[백준 10162번] 전자레인지(파이썬) (0) | 2022.11.16 |
[백준 2217번] 로프(파이썬) (0) | 2022.11.16 |
[백준 5585번] 거스름돈(파이썬) (0) | 2022.11.15 |
Comments