EverGiver

01-1 알고리즘이란? 본문

Python/알고리즘

01-1 알고리즘이란?

친절한개발초보자 2021. 10. 1. 02:54
728x90
알고리즘인란?
  • 알고리즘
    : 어떠한 문제를 해결하기 위해 정해 놓은 일련의 절차
     
     ★ 올바른 알고리즘이란 '어떠한 경우에도 실행 결과가 똑같이 나오는 것' ★

 

세 정수의 최댓값 구하기
maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c
  • 순차 구조
    : 한 문장씩 순서대로 처리되는 구조
  • 선택 구조
    : 조건식으로 평가한 결과에 따라 프로그램의 실행 흐름이 변경되는 구조
      - if 문은 복합문에 해당된다.
      - if와 콜론(:) 사이에 있는 식을 조건식이라고 한다.

 

문자열 숫자 입력받기
name = input( '이름을 입력하세요.: ')
  • input( ) 함수
    : 키보드로 문자열을 입력받아 반환한다.
  • map( ) 함수
    n1, n2, n3 = map(int, input('3 수를 입력하시오 : ').split())
복합문의 구조
  • 헤더 (header)
    : if 문이나 while 문 등 복합문의 첫 부분은 if나 while과 같은 키워드로 시작하여 콜론(:)으로 끝나는 부분

 

함수의 반환 값과 함수 호출식 평가하기
  • 함수 내부에서 처리한 값을 반환할 때에는 return 문을 사용하면 된다.
  • 실제로 함수가 반환하는 값을 얻으려면 함수를 호출한다.
    → '함수 호출식을 평가해야 함수가 반환한 값을 얻을 수 있다'라고 한다.

 

복합문을 작성할 때 지켜야 할 규칙
  • 복합문의 스위트는 반드시 행마다 같은 수준으로 들여 쓰기를 해야 한다.
  • 들여 쓰기는 공백을 최소 1개 이상 사용해하며, PEP 8에서는 공백 4개를 들여쓰기로 사용할 것을 권장한다.
    if a < b:
    	min2 = a #공백 4개로 들여쓰기
        max2 = b​
  • 만약 스위트가 단순문이면 헤더와 같은 행에 둘 수 있다.
  • 단순문이 2개 이상이면 각각의 단순문을 세미콜론(;)으로 구분하여 헤더와 같은 행에 둘 수 있다.
    if a < b: min2 = a    # 단순문 1개
    if a < b: min2 = a; max2 = b    # 단순문 2개​
  • 스위트가 복합문이면 헤더와 스위트를 같은 행에 포함시킬 수 없다.
    if a < b: if c < d; x = u    # 오류 발생​
세 정수의 대소 관계와 중앙값
  • 결정 트리
    : 조합을 나열한 모습이 나무처럼 생김

결정 트리

 

조건문과 분기
  • 분기 (branching)
    : 프로그램의 실행 흐름을 다른 곳으로 변경하는 명령

 

연산자와 피연산자
  • 산술 연산자 (operator)
    : +나 - 등의 기호
  • 피연산자 (operand)
    : 연산 대상
  • 연산자는 피연산자의 개수에 따라 분류된다.
    - 단항 연산자 (unary operator)
      : 피연산자 1개
        ex) -a
    - 이항 연산자 (binary operator)
      : 피연산자 2개
        ex) a < b
    - 삼항 연산자 (ternary operator)
      : 피연산자 3개
        ex) a if b else c

 

순서도 기호 살펴보기

순서도 (flowchart)는 문제를 정의/분석하고 해결하는 방법을 그림으로 표현한다.

  • 프로그램 순서도에 포함된 기호들
    - 실제로 실행할 연산을 나타내는 기호
    - 제어 흐름을 나타내는 선 기호
    - 프로그램 순서도를 이해하거나 작성하는 데 편리한 특수 기호
  • 데이터
    : 데이터는 기억 장치를 지정하지 않은 데이터 자체를 나타낸다.
    대이터
  • 처리
    : 여러 종류의 처리 기능을 나타낸다. 
      - 정보의 값/형/위치를 바꾸도록 정의한 연산이나 연산 집합의 실행, 또는 연속하는 몇 가지 흐름 가운데 하나의 방향을 결정하는 연산이나 연산 집합의 실행을 나타낸다.
    처리
  • 미리 정한 처리
    : 서브루틴이나 모듈 등 다른 곳에서 이미 정의한 하나 이상의 연산 또는 명령으로 이루어진 처리
    미리 정의한 처리
  • 판단
    : 하나의 입구와 하나 이상을 선택하는 출구가 없고, 판단 기호 안에 정의한 조건을 평가하여 하나의 출구를 선택하는 판단 기능(스위치형 기능)을 나타낸다.
      - 주로 예상되는 평가 결과는 경로를 나타낸 선 가까이에 표기한다.
    조건
  • 루트 범위
    : 두 부분으로 구성되어 루프의 시작과 종료를 나타낸다.
      - 2개의 루프 범위 기호 안에는 같은 이름(내용)을 표기한다.
    루트 범위

  • : 제어의 흐름을 의미
      - 흐름의 방향을 분명히 나타낼 때는 화살표를 사용한다.
  • 단말
    : 외부 환경으로 나가거나 외부 환경에서 들어오는 것을 나타낸다.
      - 주로 프로그램 흐름의 시작과 종료를 나타낸다.
    단말
728x90

'Python > 알고리즘' 카테고리의 다른 글

02-2 배열이란?  (0) 2022.01.05
02-1 자료구조와 배열  (0) 2022.01.03
01-2 반복하는 알고리즘  (0) 2021.10.01
Comments