EverGiver
01-1 알고리즘이란? 본문
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