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

Jeony·2021년 9월 15일
0

codeup 기초 100제

목록 보기
88/98
post-thumbnail

문제

종합

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어
1 4 7 10 13 16 19 22 25 ... 은
1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다.
이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여

등차(차이가 같다의 한문 말) 수열이라고 한다. (등차수열 : arithmetic progression/sequence)
수열을 알게 된 영일이는 갑자기 궁금해졌다.

"그럼.... 123번째 나오는 수는 뭘까?"

영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.

입력 예시

1 3 5

출력 예시

13

답안

모델 답안

a,d,n=input().split()
a=int(a)
d=int(d)
n=int(n)
s=a
for i in range(2, n+1):
	s+=d
print(s)

내 답안

a, d, n = input().split()
a, d, n = int(a), int(d), int(n)
goal_num = a
count = 2

while count <= n:
    count += 1
    goal_num += d
print(goal_num)

풀이

모델답안은 for문을, 제 풀이는 while문을 사용했어요!
이번엔 둘 다 설명을 해볼께요!🕵‍♀

🔍모델답안

1. 입력 값을 띄엄띄엄 받기 위해서 input().split() 사용하고 산수를 하기위해 int()으로 변환해주어요.

a,d,n=input().split()
a=int(a)
d=int(d)
n=int(n)
  1. 예시) 1부터 시작해서 10까지 3씩 커진다.
    🙄 문제의 핵심이죠.
  2. 이 커지는 수열을 저장할 공간을 s라는 이름으로 선언해요. a부터 시작해야 하니까 a로 초기화!
  3. 그런 다음 for문을 써요. range()는 2부터 시작해요.
    그 이유는 시작 값은 우리가 입력하잖아요? 1은 시작값, 그 다음부터 시작!
a,d,n=input().split()
a=int(a)
d=int(d)
n=int(n)
s=a
for i in range(2, n+1):
  1. 이제 커지는 수열을 저장할 공간인 s에 s와 d를 더해서 s에 넣어요! (s = s + d)
    그럼 점점 d씩 커지면서 저장이 되겠죠?
  2. 이제 s를 for문 바깥에서 출력합니다. 끝👻
a,d,n=input().split()
a=int(a)
d=int(d)
n=int(n)
s=a
for i in range(2, n+1):
	s+=d
print(s)

😎내 풀이

1. 입력 값을 띄엄띄엄 받기 위해서 input().split() 사용하고 산수를 하기위해 int()으로 변환해주어요.
2. 그런다음 이 커지는 수열을 저장할 공간을 goal_num이라는 이름으로 선언해요. a부터 시작해야 하니까 a로 초기화!
3. for문은 count를 셀 수 있지만 while은 할 수 없기 때문에 따로 count 선언하고 2로 초기화!
그 이유는 시작 값은 우리가 입력하잖아요? 1은 시작값, 그 다음부터 시작!
count = 1: 시작값
count = 2: 시작값 + d(일정하게 더해지는 값)

a, d, n = input().split()
a, d, n = int(a), int(d), int(n)
goal_num = a
count = 2
  1. while문을 써주는데 계속 무한반복 하면 안되잖아요? 조건을 n이 count보다 클 때 동안만 반복하게 해주어요.
  2. count는 돌 때마다 +1을 해주어요
  3. 이제 커지는 수열을 저장할 공간인 goal_num에 goal_num와 d를 더해서 goal_num에 넣어요!
    (goal_num = goal_num + d)
    그럼 점점 d씩 커지면서 저장이 되겠죠?
    7.이제 s를 for문 바깥에서 출력합니다. 끝👻👻
a, d, n = input().split()
a, d, n = int(a), int(d), int(n)
goal_num = a
count = 2
while count <= n:
    count += 1
    goal_num += d
print(goal_num)

input(): 프롬프트를 띄워서 사용자의 입력 받을 수 있게 해준다.
(단, 입력 받은 것은 문자열로 저장된다. print(type()))으로 type() 괄호 안에 변수를 넣고 찍으면 정수인지, 문자열인지, 무슨 타입인지 확일 할 수 있다!)

int(n): 위의 input()에서 말했듯이 input으로 받은 값은 문자열로 저장된다.
산술을 하기 위해, 문자열을 정수로 변환시켜주는 int()를 써서 변환시켜준다.

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직전까지 표현))

while문: 조건이 True면 밑에 내용 실행!
while 조건식:
(들여쓰기칸) 실행문

while문은 조건식이 계속 맞도록 해주면 무한으로 반복할 수 있다!
ex)

while True
    print("ㅎㅎ")

멈추지 않는 이상 계속 반복

print(): 괄호 안의 내용을 출력!

profile
알고리즘으로 문제를 해결하자 (ʘ言ʘ╬)

0개의 댓글