관리 메뉴

정리왕

파이썬 알고리즘 공부 본문

6.개발/파이썬 공부하기

파이썬 알고리즘 공부

정리합니다 2023. 2. 5. 08:44
반응형

 

한 문장씩 순서대로 처리되는 구조를 순차 구조(Sequential structure)라고 한다.

 

조건식으로 평가한 결과에 따라 프로그램의 실행 흐름이 변경되는데 이러한 구조를 선택 구조(Select Structure)라고 한다.

 

문자열을 정수형으로 변환하는 과정을 형 변환(type conversion) 이라고 한다.

 

부동 소수점(floating point)은 컴퓨터에서 실수를 근사값으로 표현할 때 사용한다. 부동 소수점 방식은 실수를 가수 부분과 지수 부분으로 나누어 표현하는 것을 말한다. 이때 가수 부분은 유효 숫자를 나타내고 지수 부분은 소수점의 위치를 나타낸다. 부동 소수점 방식은 고정 소수점 방식보다 넓은 범위의 수를 나타낼 수 있어서 과학 또는 수학 계산을 할 때 많이 이용한다. 하지만 근사값으로 표현된다는 점과 고정 소수점 방식보다 연산 속도가 느리다는 점 때문에 부동 소수점 방식을 위한 별도의 연산 장치를 두는 경우가 많다.

 

알고리즘(또는 프로그램)이 흐르는 방향은 조건식이 결정한다.

 

마름표 안에 작성한 조건식에 따라 알고리즘 흐름이 두 갈래로 나뉘는 것을 양 갈래 선택이라고 한다.

 

복합문의 구조

if문이나 while 문 등 복합문의 첫 부분은 if나 while과 같은 키워드로 시작하여 콜론(:)으로 끝난다.
이 부분을 헤더(header)라고 한다. 헤더의 마지막 콜론(:)은 '바로 뒤에 스위트가 이어진다'를 의미한다.

스위트(suite)는 헤더와 한 세트로 따라다니는 실행문을 의미한다.

 

 

""" 주석 """ 은 파이썬의 docstring으로 여러 줄의 주석을 입력할 때도 사용한다. 

 

알고리즘 : 어떠한 문제를 해결하기 위해 정해 놓은 일련의 절차

특히 올바른 알고리즘이란? '어떠한 경우에도 실행 결과가 똑같이 나오는 것'을 말한다.

만약 알고리즘의 실행 결과가 어떤 경우에는 맞고 어떤 경우에는 틀리면 올바른 알고리즘이라고 할 수 없다.

 

PEP 8 (파이썬의 코드 작성 규칙)에서는 공백 4개를 들여쓰기로 사용할 것을 권장한다. 

만약 스위트가 단순문이면, 헤더와 같은 행에 둘 수 있다.

또한 단순문이 2개 아싱이면 각각의 단순문을 세미콜론(;)으로 구분하여 같이 헤더와 같은 행에 둘 수 있다.

이때 세미콜론은 마지막 단순문 뒤에 놓을 수도 있다.

하지만 스위트가 복합문이면 헤더와 스위트를 같은 행에 포함시킬 수 없다.

 

파이썬 스타일 가이드 PEP 8?

만약 여러 파이썬 개발자들이 같이 작업을 하는데 코드를 작성하는 스타일이 모두 다르다면 어떤 문제가 생길까요?

코드의 일관성도 없을 뿐만 아니라, 스타일을 통일하느라 시간이 많이 걸릴 수도 있다.

이러한 문제를 방지하기 위해 파이썬에서는 PEP 8 문서를 통해 파이썬의 일관된 규칙을 가이드로 제공한다.

예를 들어 클래스명은 카멜 케이스(CamelCase) 형식으로, 함수명은 스네이크(snake_case) 형식으로 쓸 것을 권장한다.

자세한 내용은  링크(https://www.python.org/dev/peps/pep-0008)를 참고하세요.

 

 

조합을 나열한 모습이 나무처럼 생겨서 결정 트리 (decision tree)라고 한다.

결정 트리는 왼쪽 끝에서 시작하여 오른쪽으로 나아간다.

 

 

분기(branching)는 프로그램의 실행 흐름을 다른 곳으로 변경하는 명령을 뜻한다.

 

프로그래밍 언어에서는  +나 - 등의 기호를 산술 연산자(operator), 연산 대상을 피연산자(operand)라고 한다.

대소 관계를 판단하는 식 a > b 에서 연산자는 > 이고, 피연산자는 a와 b이다.

연산자는 피연산자 개수에 따라 3가지로 분류된다.

1. 단항 연산자(unary operator) : 피 연산자 1개  (예) -a

2. 이항 연산자(binary operator) : 피 연산자 2개  (예) a < b

3. 삼항 연산자(ternary operator) : 피 연산자 3개  (예) a if b else c

 

이 중에서 조건 연산자(conditional operator)인 if~else 문은 파이썬의 유일한 삼항 연산자이다.

a if b else c는 b를 평가한 값이 참(True)이면 a를, 거짓(False)이면 c를 보여준다.  

 

 

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

  • 실제로 실행할 연산을 나타내는 기호
  • 제어 흐름을 나타내는 선 기호
  • 프로그램 순서도를 이해하거나 작성하는 데 편리한 특수 기호

데이터 : 데이터는 기억 장치를 지정하지 않은 데이터 자체를 나타낸다.

처리 : 처리는 여러 종류의 처리 기능을 나타낸다. 즉, 정보의 값, 형, 위치를 바꾸도록 정의한 연산이나 연산 집합의 실행, 또는 연속하는 몇 가지 흐름 가운데 하나의 방향을 결정하는 연산이나 연산 집합의 실행을 나타낸다.

미리 정의한 처리 : 미리 정의한 처리는 서브루틴이나 모듈 등 다른 곳에서 이미 정의한 하나 이상의 연산 또는 명령으로 이루어진 처리를 나타낸다.

판단 : 판단은 하나의 입구와 하나 이상을 선택하는 출구가 있고, 판단 기호 안에 정의한 조건을 평가하여 하나의 출구를 선택하는 판단 기능(스위치형 기능)을 나타낸다. 주로 예상되는 평가 결과로 경로를 나타낸 선 가까이에 표기한다.

루프범위 : 루프 범위는 두 부분으로 구성되어 루프의 시작과 종료를 나타낸다. 2개의 루프 범위 기호 안에는 같은 이름(내용)을 표기한다. 루프의 시작 기호 또는 종료 기호 안에 초깃값(1), 증가값(1), 종료값(n 또는 종료 조건)을 표기한다.

선 : 선은 제어의 흐름을 의미한다. 흐름이 방향을 분명히 나타탤 때는 화살표를 사용한다.

단말 : 단말은 외부 환경으로 나가거나 외부 환경에서 들어오는 것을 나타낸다. 주로 프로그램 흐름의 시작과 종료를 나타낸다.

 

어떤 조건이 성립하는 동안 반복해서 처리(프로그램 명령문 또는 명령어의 집합)하는 것을 반복 구조(repetition structure)라 하고 일반적으로 루프(loop)라고 한다.

while 문은 실행하기 전에 반복을 계속할 것인지를 판단하는데 이런 구조를 사전 판단 반복 구조라고 한다.

 

 

이터러블 객체는 반복할 수 있는 객체를 말하며, for i in range(1, 5)와 같이 for ~ in문에 사용할 수 있다.

또한 파이썬에서 사용하는 대표적인 이터러블 자료형으로 list, str, tuple 이 있다.

 

range(n) : 0이상 n 미만인 수를 차례로 나열하는 수열이다.

range(a, b) : a이상 b 미만인 수를 차례로 나열하는 수열이다.

range(a, b, step) : a이상 b 미만인 수를 step 간격으로 나열하는 수열이다.

반응형
Comments