2022년 11월 5일에 작성됨
https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
문제 분석
N개의 자연수 합이 최댓값이 되려면 1부터 2, 3, 4...까지 차례대로 더해준다.
1부터 n까지 더한 누적합이 s보다 커지게 되면, 커지기 직전의 가장 마지막에 더해준 자연수가 최댓값이 된다.
예를 들어 s=20이면,
1+2+3+4+5+6=21>20(커짐),
1+2+3+4+5=15<20(커지기 전) -> 최댓값은 5가 된다.
소스 코드 (⭕)
s = input() # 자연수 합 s 입력
sum = 0 # 누적합 담을 변수 sum 0으로 초기화
add = 1 # 1부터 더해주기 위해 add는 1로 초기화
while (1): # 조건에 맞을 때까지 무한 반복
sum += add # sum에 add를 더해줌
if (int(sum) > int(s)): # sum이 s보다 커지게 되면
print(add-1) # 커지기 전의 add 값 출력
break
add += 1 # add를 +1 해줌
코드 분석
1. s를 입력받고, sum과 add의 초깃값을 각각 0과 1로 설정해준다.
2. 무한반복문으로 sum에 add를 더해주고 add는 +1씩 해주는데, 만약 sum이 s보다 커지게 되면, 커지기 전의 값 add-1을 출력한다.
end
이 정도 난이도까진 혼자 풀 수 있다! 좋아~~!!😆
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Python]백준_2628 : 종이자르기 (2) | 2023.10.30 |
---|---|
[Python]백준_2581 : 소수 (2) | 2023.10.29 |
[Python]백준_1427 : 소트인사이드 (0) | 2023.10.29 |
[Python]백준_1193 : 분수찾기 (2) | 2023.10.27 |
[Python]백준_2857 : FBI (0) | 2023.10.27 |