프로그래밍 문제 풀이/코드업(파이썬)

코드업[CodeUp] Python 기초 100제 [6086번]

태은코딩 2024. 1. 12. 14:11

6086 : [기초-종합] 거기까지! 이제 그만~(설명)(py)

문제설명
1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

하지만, 이번에는 그 때 까지의 합을 출력해야 한다.

예를 들어, 57을 입력하면
1+2+3+...+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.

 

입력값
언제까지 합을 계산할 지, 정수 1개를 입력받는다.
단, 입력되는 자연수는 100,000,000이하이다.
출력값
1, 2, 3, 4, 5 ... 순서대로 계속 더해가다가, 그 합이 입력된 정수보다 커지거나 같아지는 경우,
그때까지의 합을 출력한다.

 

입력 예시
57
출력 예시
66

 

정답 및 가능한 정답

a=int(input())
sum=0
d=0
while sum<a:
    d+=1
    sum+=d
print(sum)
a=int(input())
sum=0
for i in range(1,a+1):
    if sum<a:
        sum+=i
    else:
        break
print(sum)
a=int(input())
sum=0
d=0
while True:
    sum=sum+d
    d=d+1
    if sum>=a:
        break
print(sum)

 

해설

입력값 n에 대하여 수들의 합 sum과 공차 d를 설정했을 때
while 문으로 sum=0, d=0을 설정해서 sum<a 조건 일 때 1, 2, 3... 순서대로 늘려가며 더하도록 식을 작성하면
while sum<a:
    d+=1
    sum+=d

for 문으로 range()를 이용해 1, 2, 3.... 순서대로 늘려가며 더하도록 설정해도 된다. 
for i in range(1, a+1):
    if sum<a:
        sum+=i
    else:
        break

아니면 while 문이 True 일 때 if 문으로 sum>=a가 되는 순간 break로 반복문을 빠져나가게 설정해도 된다.
while True:
    sum=sum+d
    d=d+1
    if sum>=a:
        break