데이터 꿈나무

[학술 동아리 DAL / Python] 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램(for문, if문, range함수) 본문

Activity/학술 동아리 DAL

[학술 동아리 DAL / Python] 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램(for문, if문, range함수)

ye_ju 2022. 9. 18. 16:12

안녕하세요~! 이번에 포스팅할 글은 학교 학술동아리 'DAL'에서 python 문제를 푼 것을 공유해드리려고 해요~

바로 시작할게요!

 

문제 : 1, 2, 3, ...을 순서대로 계속 더해 합을 만드는데, 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다. 

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

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

 


 

input(), int(input())

input 함수를 이용하여 사용자가 어떤 값을 입력하게 하고 그 값을 변수에 저장할 수 있습니다.

여기서 주의할 점은 아래의 코드처럼 int를 해주지 않고 그냥 input만 해주면 입력받은 값은 '문자열'로 저장이 됩니다. 

 

저희는 정수를 입력받아야 하기 때문에 int(input())을 해준 후 사용자가 무엇을 입력해줘야 하는 지 알 수 있도록 "정수를 입력하세요: "문구까지 써주겠습니다. 

그리고 입력받은 정수를 변수 x에 저장하였습니다. 

# 사용자에게 입력받을 정수 입력
x = int(input("정수를 입력하세요:"))

 

저는 정수 57을 입력해보겠습니다. 그러면 이제 변수 x에 57이라는 숫자가 들어가게 되는 것입니다. 

정수 입력받아서 x에 저장

 

for 반복문, if 조건문

우선 합을 저장할 변수가 필요하기 때문에 sum이라는 변수를 만들었습니다.

그리고 반복문 for와 range를 이용하여 1부터 입력한 정수 57까지 반복하여 i에 저장되게 하였습니다. 

// 1부터 x까지 반복을 하려면 range(1, x+1)을 해주어야겠죠?

 

※ range함수?

range는 특정 구간의 숫자의 범위를 만들어주는 함수입니다.

예를 들어, range(1, 10) 이면 1에서 10-1까지의 정수 범위를 반환합니다. 

 

그 후 sum에 sum + i 값이 저장되도록 해주었습니다.

처음에 range 함수에 의해 i에 1이 들어가면 sum + i는 0 + 1이 되어 sum에는 1이 저장되겠죠?

그 다음에는 i에 2가 들어가고 sum + i = 1 + 2가 되어서 sum에는 3이 저장될 것입니다.

 

이렇게 계속 반복해나가다가 만약에(if) 그 합(sum)이 입력된 정수(x)보다 크거나 같을 경우 반복문을 빠져나가게 합니다.(break)

sum = 0

for i in range(1,x+1):
    sum = sum + i
    if sum >= x:
        break
print(sum)

 

코드를 실행 후 print(sum)을 해보니 66이 출력된 것을 확인할 수 있습니다.


전체 코드
# 사용자에게 입력받을 정수 입력
x = int(input("정수를 입력하세요:"))


sum = 0
for i in range(1,x+1):
    sum = sum + i
    if sum >= x:
        break
print(sum)

 

지금까지 제가 동아리에서 풀었던 python 문제를 같이 풀어봤는데요, 도움이 되셨나요~? 

아마 글로만 보고 이해하는데 한계가 있을 거예요~ 코드를 직접 입력해보면서 이해하는 시간을 가진다면 코드가 어떻게 돌아가는지 머리에 쏙쏙 들어올 거랍니다ㅎㅎ

 

우리 데이터 꿈나무들 파이팅~!!

Comments