어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.
예를 들어
2 6 18 54 162 486 ... 은
2부터 시작해 이전에 만든 수에 3을 곱해 다음 수를 만든 수열이다.
이러한 것을 수학에서는 앞뒤 수들의 비율이 같다고 하여
등비(비율이 같다의 한문 말) 수열이라고 한다. (등비수열 : geometric progression/sequence)
등비 수열을 알게된 영일이는 갑자기 궁금해졌다.
"그럼.... 13번째 나오는 수는 뭘까?"
영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.
시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.
2 3 7
1458
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)
or
a, r, n = input().split()
a, r, n = int(a), int(r), int(n)
goal_num = a
for i in range(2, n+1):
goal_num *= r
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(): 괄호 안의 내용을 출력!