<Do it! 자료구조와 함께 배우는 알고리즘 입문>
1장 알고리즘 기초
01-2 반복하는 알고리즘
1부터 n까지의 정수의 합 구하기
방법 1
def sum(n):
sum = 0
for i in range(1, n+1):
sum += i
return sum
print(sum(5))
방법 2
def sum(n):
sum = 0
i = 1
while i <= n:
sum += i
i += 1
return sum
print(sum(5))
while문 반복
- 반복 구조 repetition structure / loop : 어떤 조건이 성립하는 동안 반복해서 처리하는 것
- 사전 판단 반복 구조 - while 조건식 :
- 명령문(루프 본문)
- 카운터용 변수 - 반복을 제어할 때 사용하는 변수 ex) i
for문 반복
-루프 범위 loop limit : {시작 지점} ~ {종료 지점}
- 이터러블 객체 생성 : 반복할 수 있는 객체(생성하는 건 range() / 객체 - list, str, tuple)
* range(a, b, step) : a 이상 b 미만 step 간격으로 나열
연속하는 정수의 합을 구하기 위해 값 정렬하기
입력 a, b출력 a에서 b까지의 정수 합
def sum(a, b):
sum = 0
for i in range(a, b+1):
sum += i
return sum
print(sum(2, 3))
* a > b일 때는?
def sum(a, b):
sum = 0
if a > b:
a1 = b
b1 = a
for i in range(a1, b1+1):
sum += i
return sum
print(sum(5, 3))
**예제 - 두 값 교환하기**
- 튜플을 생성해서 교환한다고 한다. (cf) 02-1 튜플)
a, b = b, a
반복 과정에서 조건 판단하기 1
입력 : 정수 a, b
출력 : 'a부터 b까지 정수의 합을 구합니다.
정수 a를 입력하세요 : 3
정수 b를 입력하세요 : 5
3 + 4 + 5 = 12'
hmm..
print('a부터 b까지 정수의 합을 구합니다.')
a = int(input('정수 a를 입력하세요 : '))
b = int(input('정수 b를 입력하세요 : '))
sum = 0
if a > b:
a, b = b, a
for i in range(a, b):
print(str(i) + '+', end = '')
sum += i
print(str(b), '=', str(sum+b), end = '')
예제 코드 - f 없으면 {i}로 그대로 출력한다.
* if문 때문에 비효율적 *
print('a부터 b까지 정수의 합을 구합니다.')
a = int(input('정수 a를 입력하세요 : '))
b = int(input('정수 b를 입력하세요 : '))
sum = 0
if a > b:
a, b = b, a
for i in range(a, b+1):
if i < b:
print(f'{i} + ', end = '')
else:
print(f'{i} = ', end = '')
sum += i
print(sum)
두 값 교환하기 2 - 임시 변수 t를 이용할 수도 있음 ㅇㅎ
반복 과정에서 조건 판단하기 2
* 줄바꿈 없이 연속으로 출력하기
* 입력 - 출력 개수
* 출력 - '+와 -를 번갈아 출력합니다.
몇 개를 출력할까요? : 12
+-+-+-+-+-+-'
왕
print('+와 -를 번갈아 출력합니다.')
n = int(input('몇 개를 출력할까요? : '))
if n % 2 == 1:
print('+-' * (n//2) + '+')
else:
print('+-' * (n//2))
반복 조건에서 조건 판단하기 3
입력 : 출력 개수, 줄바꿈 간격
출력 : '*를 출력합니다.
몇 개를 출력할까요? : 14
몇 개마다 줄바꿈할까요? : 5'
print('*를 출력합니다.')
n = int(input('몇 개를 출력할까요? : '))
div = int(input('몇 개마다 줄바꿈할까요? : '))
for i in range(1, n//div+1):
print('*' * div)
print('*' * (n%div))
예제 코드
print('*를 출력합니다.')
n = int(input('몇 개를 출력할까요? :'))
w = int(input('몇 개마다 줄바꿈할까요? :'))
for i in range(n):
print('*', end='')
if i % w == w - 1:
print() #어머 이게 줄바꿈!
if n % w:
print()
- i % w == w - 1 (다음 단계에서 배수니까 한 줄 띄운다)
예제 코드 2
print('*를 출력합니다.')
n = int(input('몇 개를 출력할까요? :'))
w = int(input('몇 개마다 줄바꿈할까요? :'))
for i in range(n//w):
print('*' * w)
rest = n % w
if rest:
print('*' * rest)
양수만 입력받기
1부터 n까지의 합을 구한다.
입력: n
출력 : 'n값을 입력하세요 : -1
n값을 입력하세요 : 0
n값을 입력하세요 : 2
1에서 n까지의 합은 3'
n = int(input('n값 : '))
while True:
if n > 0:
break
n = int(input('n값: '))
print(n * (n+1) // 2)
무한 루프infinite loop와 break문
for문이 종료된 이후 카운터용 변수 i값
직사각형 넓이로 변의 길이 구하기
입력 : 넓이
출력 : 모든 가능한 변의 조합
ex) 4
4 * 1
2 * 2
n = int(input('넓이는 : '))
for i in range(1, n+1):
if n % i == 0:
print(str(i), '*', str(n // i))
'Computer Science > 자료구조' 카테고리의 다른 글
[4.21] 02-1 배열하는 알고리즘 (2) (1) | 2021.04.21 |
---|---|
[4.20] 02-2 배열이란? -(1) (1) | 2021.04.20 |
[4.19] 02-1 자료구조와 배열(1) (1) | 2021.04.19 |
[4.18] 01-2 반복되는 알고리즘 (마무리) (0) | 2021.04.18 |
[4.18] <Do it! 자료구조와 함께 배우는 알고리즘 입문 - 파이썬> (0) | 2021.04.18 |