1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만
계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 계속 더해 나간다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는 지를 알아보고자하는 문제이다.
55
10
n = int(input())
s = 0
t = 0
while s<n:
t = t+1
s = s+t
print(t)
n = 0
result = 0
input_num = int(input())
for i in range(1, input_num+1):
if n < input_num:
n = i + n
result = i
print(result)
피보나치 문제!!
제 답안과 모델 답안의 풀이가 다른데요.😂
푸는 과정이 다르지 방식은 똑같아요! 그래서 제가 둘 중에 뭘 설명하든 둘 다 이해 되실꺼예요!😉
저는 모범 답안의 풀이를 적어볼께요✏️
- n: 입력 값을 저장할 변수. (입력 값은 항상 문자열이기 때문에 int() 해주어야 함)
s: 더한 값을 쌓아둘 변수.
t: 더할 값이 변하는 변수.
ex)
s=s+t
1=0+1
3=1+2
6=3+3
10=6+4
15=10+5
:n = int(input()) s = 0 t = 0
- 우리가 구하고자 하는 것은 s가 n보다 작을 때(n보다 커질 직전까지) t의 값이 무엇인지이기 때문에 while문을 s가 n보다 작을 때 동안 반복 시킨다.
n = int(input()) s = 0 t = 0 while s<n:
- t = t+1: t는 계속 1씩 늘어나면서 더해져야 하기 때문에 반복시 +1 씩 하도록한다.
(우리가 구하고자 하는 것은 s가 n보다 작을 때(n보다 커질 직전까지) t의 값이 무엇인지이다.)
s = s+t: s는 t와 계속 합해져야 입력값을 넘을 수 있기 때문에 s+t를 한다.
그러면 처음에 봤던 밑의 식과 동일하게 된다.
ex)
s=s+t
1=0+1
3=1+2
6=3+3
10=6+4
15=10+5
:n = int(input()) s = 0 t = 0 while s<n: t = t+1 s = s+t
- while을 벗어나서 출력을 해준다. 그러면 s가 입력값인 n보다 커지기 직전에 멈추고 +1씩 더해져서 늘어난 t의 값을 구할 수 있게된다.
n = int(input()) s = 0 t = 0 while s<n: t = t+1 s = s+t print(t)
input(): 프롬프트를 띄워서 사용자의 입력 받을 수 있게 해준다.
(단, 입력 받은 것은 문자열로 저장된다. print(type()))으로 type() 괄호 안에 변수를 넣고 찍으면 정수인지, 문자열인지, 무슨 타입인지 확일 할 수 있다!)
int(): 위의 input()에서 말했듯이 input으로 받은 값은 문자열로 저장된다.
산술을 하기 위해, 문자열을 정수로 변환시켜주는 int()를 써서 변환시켜준다.
while문: 조건이 True면 밑에 내용 실행!
while 조건식:
(들여쓰기칸) 실행문
while문은 조건식이 계속 맞도록 해주면 무한으로 반복할 수 있다!
ex)
while True
print("ㅎㅎ")
멈추지 않는 이상 계속 반복
for문: 반복을 데이터가 남을 때까지 밑에 내용 계속 반복 실행!
for i in 데이터:
(들여쓰기칸) 실행문
ex)
for i in [1, 2 ,3]:
print(i)
출력: 1
2
3
데이터에는 iterable이 들어갈 수 있다.
range(): 괄호 안에 들어가는 숫자만큼의 수열을 표현해준다.
range(3) -> 0, 1, 2 (0부터 3직전까지 표현)
range(1, 3) -> 1, 2 (1부터 시작해서 3직전까지 표현)
range(1, 3, +2) -> 1 (1부터 시작해서 2씩 늘려가서 3직전까지 표현. (1 + 2는 3이므로 3직전까지 표현))
print(): 괄호 안의 내용을 출력!