01 - 1 알고리즘이란?
어떠한 문제를 해결하기 위해 정해 놓은 일련의 절차
특히 올바른 알고리즘이란 '어떠한 경우에도 실행 결과가 똑같이 나오는 것'을 말함.
실습 1-1 세 정수의 최댓값 구하기
# 세 정수의 최댓값 구하기
print('세 정수의 최댓값을 구합니다.')
a = int(input('정수 a의 값을 입력하세요.: '))
b = int(input('정수 b의 값을 입력하세요.: '))
c = int(input('정수 c의 값을 입력하세요.: '))
maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c
print(f'최대값은 {maximum}입니다.')
세 정수의 최댓값을 구합니다.
정수 a의 값을 입력하세요.: 5
정수 b의 값을 입력하세요.: 19
정수 c의 값을 입력하세요.: 25
최대값은 25입니다.
8 ~ 10행은 순차적으로 실행됩니다. 이렇게 한 문장씩 순서대로 처리되는 구조를 순차구조(sequential structure)라고 합니다.
if와 콜론(:) 사이에 있는 식을 조건식이라고 합니다. 조건식으로 평가한 결과에 따라 프로그램의 실행 흐름이 변경되는데 이러한 구조를 선택구조(select structure)라고 합니다.
- 알고리즘이 흐르는 방향은 조건식이 결정합니다.
- 이때 ◇ 안에 작성한 조건식에 따라 알고리즘 흐름이 두 갈래로 나뉘는 것을 양갈래 선택이라 합니다.
실습 1-2 세 정수의 최댓값 구하기
def max3(a,b,c):
"""a,b,c의 최댓값을 구하여 반환"""
maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c
return maximum # 최댓값 반환
print(f'max(3,2,1) = {max3(3,2,1)}')
print(f'max(3,2,2) = {max3(3,2,2)}')
print(f'max(3,1,2) = {max3(3,1,2)}')
print(f'max(3,2,3) = {max3(3,2,3)}')
print(f'max(2,1,3) = {max3(2,1,3)}')
print(f'max(3,3,2) = {max3(3,3,2)}')
print(f'max(3,3,3) = {max3(3,3,3)}')
print(f'max(2,2,3) = {max3(2,2,3)}')
print(f'max(2,3,1) = {max3(2,3,1)}')
print(f'max(2,3,2) = {max3(2,3,2)}')
print(f'max(1,3,2) = {max3(1,3,2)}')
print(f'max(2,3,3) = {max3(2,3,3)}')
print(f'max(1,2,3) = {max3(1,2,3)}')
max(3,2,1) = 3
max(3,2,2) = 3
max(3,1,2) = 3
max(3,2,3) = 3
max(2,1,3) = 3
max(3,3,2) = 3
max(3,3,3) = 3
max(2,2,3) = 3
max(2,3,1) = 3
max(2,3,2) = 3
max(1,3,2) = 3
max(2,3,3) = 3
max(1,2,3) = 3
실습 1C-2 세 정수를 입력받아 중앙값 구하기
# 세 정수를 입력받아 중앙값 구하기 1
def med3(a,b,c):
if a>= b:
if b>= c:
return b
elif a <= c:
return a
else:
return c
elif a > c:
return a
elif b > c:
return c
else:
return b
print('세 정수의 중앙값을 구합니다.')
a = int(input('정수 a의 값을 입력하세요.: '))
b = int(input('정수 b의 값을 입력하세요.: '))
c = int(input('정수 c의 값을 입력하세요.: '))
print(f'중앙값은 {med3(a,b,c)}입니다.')
세 정수의 중앙값을 구합니다.
정수 a의 값을 입력하세요.: 283
정수 b의 값을 입력하세요.: 340
정수 c의 값을 입력하세요.: 234
중앙값은 283입니다.
# 세 정수를 입력받아 중앙값 구하기 2
def med3(a,b,c):
if (b>=a and c <= a) or (b <= a and c >= a):
return a
elif (a > b and c < b) or (a < b and c > b):
return b
return c
조건문과 분기
*분기: 프로그램의 실행 흐름을 다른 곳으로 변경하는 명령
실습 1-3 입력받은 정수의 부호(양수, 음수, 0) 출력하기
# 입력받은 정수의 부호(양수, 음수, 0) 출력하기
n = int(input('정수를 입력하세요.: '))
if n > 0:
print('이 수는 양수입니다.')
elif n < 0:
print('이 수는 음수입니다.')
else:
print('이 수는 0입니다.')
정수를 입력하세요.: 17
이 수는 양수입니다.
실습 1-4 3개로 분기하는 조건문
# 3개로 분기하는 조건문
n = int(input('정수를 입력하세요.:'))
if n == 1:
print('A')
elif n == 2:
print('B')
else:
print('C')
정수를 입력하세요.:3
C
실습 1-5 4개로 분기하는 조건문
# 4개로 분기하는 조건문
n = int(input('정수를 입력하세요.: '))
if n == 1:
print('A')
elif n == 2:
print('B')
elif n == 3:
print('C')
정수를 입력하세요.: 4
# 4개로 분기하는 조건문의 원래 모습
n = int(input('정수를 입력하세요.: '))
if n == 1:
print('A')
elif n == 2:
print('B')
elif n == 3:
print('C')
else:
pass
- 산술연산자(operator): +나 -등의 기호
- 피연산자(operand): 연산 대상
- 단항 연산자(unary operator): 피연산자 1개
ex) -a - 이항 연산자(binary operator): 피연산자 2개
ex) a < b - 삼항 연산자(ternary operator): 피연산자 3개
ex) a if b else c - 이 중에서 조건 연산자(conditional operator)인 if ~ else 문은 파이썬의 유일한 삼항 연산자입니다.
- 출처: 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] 알고리즘 기초_2 (0) | 2022.11.18 |