Code/Algorithm

[Algorithm] 알고리즘 기초_1

heedy 2022. 11. 18. 15:22
728x90

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
이 수는 양수입니다.

n의 부호 판단


실습 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

 

728x90