[CodeUp 기초 100제] 6079번 풀이 with 파이썬(python)

Jeony·2021년 9월 13일
0

codeup 기초 100제

목록 보기
79/98
post-thumbnail

문제

종합

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)

풀이

내 풀이

피보나치 문제!!

제 답안과 모델 답안의 풀이가 다른데요.😂
푸는 과정이 다르지 방식은 똑같아요! 그래서 제가 둘 중에 뭘 설명하든 둘 다 이해 되실꺼예요!😉
저는 모범 답안의 풀이를 적어볼께요✏️

  1. 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
  1. 우리가 구하고자 하는 것은 s가 n보다 작을 때(n보다 커질 직전까지) t의 값이 무엇인지이기 때문에 while문을 s가 n보다 작을 때 동안 반복 시킨다.
n = int(input())
s = 0
t = 0
while s<n:
  1. 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
  1. 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(): 괄호 안의 내용을 출력!

profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글