01 - 2 반복하는 알고리즘
실습 1-7 1부터 n까지 정수의 합 구하기 1(while 문)
# 1부터 n까지 정수의 합 구하기 1 (while 문)
print('1부터 n까지 정수의 합을 구합니다.')
n = int(input('n값을 입력하세요.: '))
sum = 0
i = 1
while i <= n:
sum += i
i += 1
print(f'1부터 {n}까지 정수의 합은 {sum}입니다.')
1부터 n까지 정수의 합을 구합니다.
n값을 입력하세요.: 36
1부터 36까지 정수의 합은 666입니다.
while 문 반복 알아보기
반복 구조(repetition structure): 어떤 조건이 성립하는 동안 반복해서 처리(프로그램 명령문 또는 명령어의 집합)하는 것, 일반적으로 루프(loop)라고 함.
while문은 전에 반복을 계속할 것인지를 판단하는데, 이런 구조를 사전 판단 반복구조 라고 함.
실습 1-8 1부터 n까지 정수의 합 구하기 2(for 문)
# 1부터 n까지 정수의 합 구하기 2(for문)
print('1부터 n까지 정수의 합을 구합니다.')
n = int(input('n값을 입력하세요.: '))
sum = 0
for i in range(1, n+1):
sum += i
print(f'1부터 {n}까지 정수의 합은 {sum}입니다.')
1부터 n까지 정수의 합을 구합니다.
n값을 입력하세요.: 34
1부터 34까지 정수의 합은 595입니다.
연속하는 정수의 합을 구하기 위해 값 정렬하기
실습 1-9 a부터 b까지 정수의 합 구하기(for 문)
# a부터 b까지 정수의 합 구하기(for문)
print('a부터 b까지 정수의 합을 구합니다.')
a = int(input('정수 a를 입력하세요.: '))
b = int(input('정수 b를 입력하세요.: '))
if a> b:
a,b = b, a
sum = 0
for i in range(a, b+1):
sum += i
print(f'{a}부터 {b}까지 정수의 합은 {sum}입니다.')
a부터 b까지 정수의 합을 구합니다.
정수 a를 입력하세요.: 3
정수 b를 입력하세요.: 64
3부터 64까지 정수의 합은 2077입니다.
a와 b를 교환할 때
a, b = b, a # a와 b의 값을 교환(단일 대입문 사용)
반복 과정에서 조건 판단하기 1
실습 1-10 a부터 b까지 정수의 합 구하기1
# a부터 b까지 정수의 합 구하기 1
print('a부터 b까지 정수의 합을 구합니다.')
a = int(input('정수 a를 입력하세요.: '))
b = int(input('정수 b를 입력하세요.: '))
if a > b:
a, b = b, a
sum = 0
for i in range(a, b + 1):
if i < b:
print(f'{i} + ', end = '')
else:
print(f'{i} = ', end = '')
sum += i
print(sum)
a부터 b까지 정수의 합을 구합니다.
정수 a를 입력하세요.: 2
정수 b를 입력하세요.: 53
2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 = 1430
실습 1-11 a부터 b까지 정수의 합 구하기2
# a부터 b까지 정수의 합 구하기 2
print('a부터 b까지 정수의 합을 구합니다.')
a = int(input('정수 a를 입력하세요.: '))
b = int(input('정수 b를 입력하세요.: '))
if a > b:
a, b = b, a
sum = 0
for i in range(a, b):
if i < b:
print(f'{i} + ', end = '')
sum += i
print(f'{b} = ', end = '')
sum += b
print(sum)
a부터 b까지 정수의 합을 구합니다.
정수 a를 입력하세요.: 4
정수 b를 입력하세요.: 9
4 + 5 + 6 + 7 + 8 + 9 = 39
반복 과정에서 조건 판단하기 2
실습 1-12 +와 -를 번갈아 출력하기 1
# +와 -를 번갈아 출력하기 1
print('+와 -를 번갈아 출력합니다.')
n = int(input('몇 개를 출력할까요?: '))
for i in range(n):
if i % 2:
print('-', end='')
else:
print('+', end='')
print()
+와 -를 번갈아 출력합니다.
몇 개를 출력할까요?: 5
+-+-+
# +와 -를 번갈아 출력하기 1(for문 수정)
print('+와 -를 번갈아 출력합니다.')
n = int(input('몇 개를 출력할까요?: '))
for i in range(1, n+1):
if i % 2:
print('+', end='')
else:
print('-', end='')
print()
+와 -를 번갈아 출력합니다.
몇 개를 출력할까요?: 6
+-+-+-
실습 1-13 +와 -를 번갈아 출력하기 2
# +와 -를 번갈아 출력하기 2
print('+와 -를 번갈아 출력합니다.')
n = int(input('몇 개를 출력할까요?: '))
for _ in range(n//2): # 무시하고 싶은 연산자 _ 처리
print('+-', end='')
if n % 2:
print('+',end='')
print()
+와 -를 번갈아 출력합니다.
몇 개를 출력할까요?: 12
+-+-+-+-+-+-
반복 과정에서 조건 판단하기 3
실습 1-14 *를 n개 출력하되 w개마다 줄바꿈하기 1
# *를 n개 출력하되 2개마다 줄바꿈하기 1
print('*를 출력합니다.')
n = int(input('몇 개를 출력할까요?: '))
w = int(input('몇 개마다 줄바꿈할까요?: '))
for i in range(n):
print('*', end='')
if i % w == w - 1:
print()
if n % w:
print()
*를 출력합니다.
몇 개를 출력할까요?: 24
몇 개마다 줄바꿈할까요?: 6
******
******
******
******
실습 1-15 *를 n개 출력하되 w개마다 줄바꿈하기 2
# *를 n개 출력하되 2개마다 줄바꿈하기 2
print('*를 출력합니다.')
n = int(input('몇 개를 출력할까요?: '))
w = int(input('몇 개마다 줄바꿈할까요?: '))
for _ in range(n//w):
print('*' * w)
rest = n % w
if rest:
print('*' * rest)
*를 출력합니다.
몇 개를 출력할까요?: 25
몇 개마다 줄바꿈할까요?: 5
*****
*****
*****
*****
*****
양수만 입력받기
실습 1-16 1부터 n까지 정수의 합 구하기(n값은 양수만 입력받음)
# 1부터 n까지 정수의 합 구하기(n 값은 양수만 입력받음)
print('1부터 n까지 정수의 합을 구합니다.')
while True:
n = int(input('n값을 입력하세요.: '))
if n > 0:
break
sum =0
i = 1
for i in range(1, n+1):
sum += i
i += 1
print(f'1부터 {n}까지 정수의 합은 {sum}입니다.')
1부터 n까지 정수의 합을 구합니다.
n값을 입력하세요.: 7
1부터 7까지 정수의 합은 28입니다.
직사각형 넓이로 변의 길이 구하기
실습 1-17 가로, 세로 길이가 정수이고 넓이가 area인 직사각형에서 변의 길이 나열하기
# 가로, 세로 길이가 정수이고 넓이가 area인 직사각형에서 변의 길이 나열하기
area = int(input('직사각형의 넓이를 입력하세요.: '))
for i in range(1, area + 1):
if i * i > area: break
if area % 1: continue
print(f'{i} x {area // i}')
직사각형의 넓이를 입력하세요.: 24
1 x 24
2 x 12
3 x 8
4 x 6

실습 1-18 10 ~ 99 사이의 난수 n개 생성하기(13이 나오면 중단)
# 10 ~ 99 사이의 난수 n개 생성하기(13이 나오면 중단)
import random
n = int(input('난수의 개수를 입력하세요.: '))
for _ in range(n):
r = random.randint(10, 99)
print(r, end=' ')
if r == 13:
print('\n프로그램을 중단합니다.')
break
else:
print('\n난수 생성을 종료합니다.')
난수의 개수를 입력하세요.: 43
97 49 65 82 65 31 14 23 52 48 54 61 42 85 22 51 94 23 40 64 15 30 59 32 31 35 37 44 71 30 47 17 92 72 16 53 51 53 60 89 49 90 26
난수 생성을 종료합니다.
반복문 건너뛰기와 여러 범위 스캔하기
실습 1-19 1 ~ 12까지 8을 건너뛰고 출력하기 1
# 1 ~ 12 까지 8을 건너뛰고 출력하기 1
for i in range(1, 13):
if i == 8:
continue
print(i, end=' ')
print()
1 2 3 4 5 6 7 9 10 11 12
실습 1-20 1 ~ 12까지 8을 건너뛰고 출력하기 2
# 1부터 12까지 8을 건너뛰고 출력하기 2
for i in list(range(1,8)) + list(range(9,13)):
print(i, end=' ')
print()
1 2 3 4 5 6 7 9 10 11 12
비교 연산자를 연속으로 사용하는 방법과 드모르간의 법칙
실습 1C-3 2자리 양수(10 ~ 99) 입력받기
# 2자리 양수(10~99) 입력받기
print('2자리 양수를 입력하세요.')
while True:
no = int(input('값을 입력하세요.: '))
if no >= 10 and no <= 99:
break
print(f'입력받은 양수는 {no}입니다.')
2자리 양수를 입력하세요.
값을 입력하세요.: 3
값을 입력하세요.: 5
값을 입력하세요.: 100
값을 입력하세요.: 45
입력받은 양수는 45입니다.
비교 연산자를 연속으로 사용한 방법
if 10 <= no <= 99: # no>= 10 and no <=99와 같음
드모르간의 법칙을 사용한 방법
if not(no < 10 or no > 99): # no >= 10 and on <= 99와 같음
드모르간의 법칙?
다음 루프 알아보기
실습 1-21 구구단 곱셈표 출력하기
# 구구답 곱셈표 출력하기
print('-' * 27)
for i in range(1,10):
for j in range(1,10):
print(f'{i * j:3}', end='') # :3 = 3칸씩 공백
print()
print('-' * 27)
---------------------------
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
---------------------------
이중 루프 실행
- i가 1일 때: j를 1 ~ 9까지 1씩 증가시키면서 1 * j를 3자리로 출력하고 줄바꿈
- i가 2일 때: j를 1 ~ 9까지 1씩 증가시키면서 2 * j를 3자리로 출력하고 줄바꿈
- i가 3일 때: j를 1 ~ 9까지 1씩 증가시키면서 3 * j를 3자리로 출력하고 줄바꿈
(··· 생략 ···)
- i가 9일 때: j를 1 ~ 9까지 1씩 증가시키면서 9 * j를 3자리로 출력하고 줄바꿈
직각 이등변 삼각형으로 출력하기
실습 1-22 왼쪽 아래가 직각인 이등변 삼각형으로 * 출력하기
# 왼쪽 아래가 직각인 이등변 삼각형으로 * 출력하기
print('왼쪽 아래가 직각인 이등변 삼각형을 출력합니다.')
n = int(input('짧은 변의 길이를 입력하세요.'))
for i in range(n):
for j in range(i + 1):
print('*', end='')
print()
왼쪽 아래가 직각인 이등변 삼각형을 출력합니다.
짧은 변의 길이를 입력하세요.6
*
**
***
****
*****
******
이중 루프 실행
- i가 0일 때: j를 0 ~ 0까지 1씩 증가시키면서 *를 출력하고 줄바꿈 *
- i가 1일 때: j를 0 ~ 1까지 1씩 증가시키면서 *를 출력하고 줄바꿈 **
- i가 2일 때: j를 0 ~ 2까지 1씩 증가시키면서 *를 출력하고 줄바꿈 ***
- i가 3일 때: j를 0 ~ 3까지 1씩 증가시키면서 *를 출력하고 줄바꿈 ****
실습 1-23 오른쪽 아래가 직각인 이등변 삼각형으로 * 출력하기
# 오른쪽 아래가 직각인 이등변 삼각형으로 * 출력하기
print('오른쪽 아래가 직각인 이등변 삼각형을 출력합니다.')
n = int(input('짧은 변의 길이를 입력하세요.: '))
for i in range(n):
for _ in range(n - i - 1):
print(' ', end='')
for _ in range(i + 1):
print('*', end='')
print()
오른쪽 아래가 직각인 이등변 삼각형을 출력합니다.
짧은 변의 길이를 입력하세요.: 7
*
**
***
****
*****
******
*******
파이썬의 변수 알아보기
파이썬에서는 데이터, 함수, 클래스, 모듈, 패키지 등을 모두 객체(object)로 취급합니다. 객체는 자료형을 가지며 메모리(저장 공간)을 차지합니다. 파이썬의 이런 특징 때문에 파이썬의 변수는 값을 갖지 않는다는 특징이 있습니다.
- 변수는 객체를 참조하는 객체에 연결된 이름에 불과합니다.
- 모든 객체는 메모리를 차지하고, 자료형뿐만 아니라 식별 번호(identity)를 가집니다.
실습 1C-4 함수 내부·외부에서 정의한 변수와 객체의 식별 번호를 출력하기
# 함수 내부·외부에서 정의한 변수와 객체의 식별 번호를 출력하기
n = 1 # 전역변수
def put_id():
x = 1 # 지역 변수
print(f'id(x) = {id(x)}')
print(f'id(1) = {id(1)}')
print(f'id(n) = {id(n)}')
put_id()
id(1) = 94905633987072
id(n) = 94905633987072
id(x) = 94905633987072
실습 1C-5 1부터 100까지 반복하여 출력하기
# 1부터 100까지 반복하여 출력하기
for i in range(1, 101):
print(f'i = {i:3} id(i) = {id(i)}')
i = 1 id(i) = 94905633987072
i = 2 id(i) = 94905633987104
i = 3 id(i) = 94905633987136
i = 4 id(i) = 94905633987168
i = 5 id(i) = 94905633987200
i = 6 id(i) = 94905633987232
i = 7 id(i) = 94905633987264
i = 8 id(i) = 94905633987296
i = 9 id(i) = 94905633987328
i = 10 id(i) = 94905633987360
i = 11 id(i) = 94905633987392
i = 12 id(i) = 94905633987424
i = 13 id(i) = 94905633987456
i = 14 id(i) = 94905633987488
i = 15 id(i) = 94905633987520
i = 16 id(i) = 94905633987552
i = 17 id(i) = 94905633987584
i = 18 id(i) = 94905633987616
i = 19 id(i) = 94905633987648
i = 20 id(i) = 94905633987680
i = 21 id(i) = 94905633987712
i = 22 id(i) = 94905633987744
i = 23 id(i) = 94905633987776
i = 24 id(i) = 94905633987808
i = 25 id(i) = 94905633987840
i = 26 id(i) = 94905633987872
i = 27 id(i) = 94905633987904
i = 28 id(i) = 94905633987936
i = 29 id(i) = 94905633987968
i = 30 id(i) = 94905633988000
i = 31 id(i) = 94905633988032
i = 32 id(i) = 94905633988064
i = 33 id(i) = 94905633988096
i = 34 id(i) = 94905633988128
i = 35 id(i) = 94905633988160
i = 36 id(i) = 94905633988192
i = 37 id(i) = 94905633988224
i = 38 id(i) = 94905633988256
i = 39 id(i) = 94905633988288
i = 40 id(i) = 94905633988320
i = 41 id(i) = 94905633988352
i = 42 id(i) = 94905633988384
i = 43 id(i) = 94905633988416
i = 44 id(i) = 94905633988448
i = 45 id(i) = 94905633988480
i = 46 id(i) = 94905633988512
i = 47 id(i) = 94905633988544
i = 48 id(i) = 94905633988576
i = 49 id(i) = 94905633988608
i = 50 id(i) = 94905633988640
i = 51 id(i) = 94905633988672
i = 52 id(i) = 94905633988704
i = 53 id(i) = 94905633988736
i = 54 id(i) = 94905633988768
i = 55 id(i) = 94905633988800
i = 56 id(i) = 94905633988832
i = 57 id(i) = 94905633988864
i = 58 id(i) = 94905633988896
i = 59 id(i) = 94905633988928
i = 60 id(i) = 94905633988960
i = 61 id(i) = 94905633988992
i = 62 id(i) = 94905633989024
i = 63 id(i) = 94905633989056
i = 64 id(i) = 94905633989088
i = 65 id(i) = 94905633989120
i = 66 id(i) = 94905633989152
i = 67 id(i) = 94905633989184
i = 68 id(i) = 94905633989216
i = 69 id(i) = 94905633989248
i = 70 id(i) = 94905633989280
i = 71 id(i) = 94905633989312
i = 72 id(i) = 94905633989344
i = 73 id(i) = 94905633989376
i = 74 id(i) = 94905633989408
i = 75 id(i) = 94905633989440
i = 76 id(i) = 94905633989472
i = 77 id(i) = 94905633989504
i = 78 id(i) = 94905633989536
i = 79 id(i) = 94905633989568
i = 80 id(i) = 94905633989600
i = 81 id(i) = 94905633989632
i = 82 id(i) = 94905633989664
i = 83 id(i) = 94905633989696
i = 84 id(i) = 94905633989728
i = 85 id(i) = 94905633989760
i = 86 id(i) = 94905633989792
i = 87 id(i) = 94905633989824
i = 88 id(i) = 94905633989856
i = 89 id(i) = 94905633989888
i = 90 id(i) = 94905633989920
i = 91 id(i) = 94905633989952
i = 92 id(i) = 94905633989984
i = 93 id(i) = 94905633990016
i = 94 id(i) = 94905633990048
i = 95 id(i) = 94905633990080
i = 96 id(i) = 94905633990112
i = 97 id(i) = 94905633990144
i = 98 id(i) = 94905633990176
i = 99 id(i) = 94905633990208
i = 100 id(i) = 94905633990240
- 출처: Do it! 자료구조와 함께 배우는 알고리즘 입문 - 파이썬 편
- notebook ipynb file: https://github.com/heejvely/Algorithm/blob/main/Do_it_algorithm/Do_it_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%EA%B8%B0%EC%B4%88_1.ipynb
GitHub - heejvely/Algorithm: 파이썬 알고리즘 인터뷰 책을 참고한 파이썬 알고리즘 연습
파이썬 알고리즘 인터뷰 책을 참고한 파이썬 알고리즘 연습. Contribute to heejvely/Algorithm development by creating an account on GitHub.
github.com
'Code > Algorithm' 카테고리의 다른 글
[Algorithm] 검색 알고리즘_2 (선형 검색) (0) | 2022.11.27 |
---|---|
[Algorithm] 검색 알고리즘_1 (0) | 2022.11.27 |
[Algorithm] 기본 자료구조와 배열_2 (0) | 2022.11.25 |
[Algorithm] 기본 자료구조와 배열_1 (0) | 2022.11.21 |
[Algorithm] 알고리즘 기초_1 (0) | 2022.11.18 |