파이썬 13

자료구조 - 리스트 (list)

리스트(List) 자료구조에 대해 하나씩 살펴보자면 먼저, 리스트란 배열과 같이 여러 개의 데이터를 나열한 자료구조이다. []를 이용하여 선언하고, 데이터의 구분은 ‘,’를 이용한다. 리스트 안에는 숫자, 문자, 논리형 등 모든 기본 데이터를 함께 저장할 수 있다. datas = [10, 20, 30, [40, 50, 60]]와 같이 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다. 인덱스(Index) 인덱스란 아이템에 자동으로 부여되는 번호표이며, 0부터 시작한다. students[0]과 같이 인덱스를 이용하여 리스트 아이템을 조회할 수 있다. 이때, 인덱스로 조회한 데이터의 타입은 해당 데이터의 종류에 따라 list 타입이 아닌 str, int, float 등으로 나타난다. len() l..

우선순위 큐(Priority Queue)와 힙(Heap)

(동빈나 이코테 강의 https://www.youtube.com/watch?v=AjFlp951nz0&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=11) 우선순위 큐 - 우선순위 큐는 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조 - 데이터를 우선순위에 따라 처리하고 싶을 때 사용 - ex) 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건부터 꺼내서 확인해야 할 때 자료구조 추출되는 데이터 스택(Stack) 가장 나중에 삽입된 데이터 큐(Queue) 가장 먼저 삽입된 데이터 우선순위 큐(Priority Queue) 가장 우선순위가 높은 데이터 - 우선순위 큐를 구현하는 방법 1) 단순히 리스트를 이용 2) 힙(heap)을 이용 - 데이터의 개수가 N개일..

이진 탐색 알고리즘

(youtube 동빈나 이코테 강의 https://www.youtube.com/watch?v=94RC-DsGMLo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=5) 이진 탐색 알고리즘 - 순차 탐색 : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 - 이진 탐색 : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 (시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정) 이진 탐색 ex) 이미 정렬된 10개의 데이터 중 값이 4인 원소를 찾는 예시 0 2 4 6 8 10 12 14 16 18 # 시작점, 중간점(소수점 제거), 끝점 0 2 4 6 4 6 이진 탐색의 시간 복잡도 - 단계마다 탐색 범위를 ..

정렬 알고리즘 - 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬

(youtube 동빈나 이코테 강의 https://www.youtube.com/watch?v=KGyK-pNvWos&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=4) 정렬 알고리즘 정렬(Sorting) : 데이터를 특정한 기준에 따라 순서대로 나열하는 것 상황에 따라 여러 정렬 알고리즘을 적절하게, 공식처럼 사용 ex) 0~9까지의 숫자가 적힌 데이터를 정렬 7 5 9 0 3 1 6 2 4 8 0 1 2 3 4 5 6 7 8 9 1. 선택 정렬 - 처리되지 않은 데이터 중 가장 작은 데이터를 선택하여 맨 앞의 데이터와 바꾸는 것을 반복 ex) 7 5 9 0 3 1 6 2 4 8 0 5 9 7 3 1 6 2 4 8 0 1 9 7 3 5 6 2 4 8 . . 0 1 2 3..

파이썬 중급 - 텍스트 파일 열기/읽기/쓰기/닫기

원하는 폴더명으로 폴더를 생성한 후, 파이썬으로 open(), read(), write(), close() 등을 이용하여 텍스트 파일을 다룰 수 있다. # write() 함수를 이용하여 텍스트 파일에 문자열 쓰기 file = open('C/python/test.txt', 'w') # w는 write의 약자 file. write('Hello World~') file.close() 여기서 주의할 점은 파일 경로를 역슬래쉬(\)가 아닌 슬래쉬(/)로 나타내야 하며, 해당 파일에 이미 데이터가 존재한다면 위와 같은 코드를 실행했을 경우 원래 있던 데이터는 모두 삭제되고, 파이썬으로 새롭게 실행시킨 데이터만 남아 저장된다. 또한, 텍스트 파일이므로 숫자 데이터를 넣을 경우는 str로 캐스팅 해주어야 하고 마지막에..

파이썬 중급 - 객체지향 프로그래밍, class (클래스)

객체지향 프로그래밍 객체지향 프로그래밍이란 객체를 이용한 프로그램으로써, 객체는 속성과 기능으로 구분된다. 자동차를 예로 든다면, 객체는 자동차이며 속성은 색상이나 가격 등을 뜻하고, 기능은 전진과 후진 등을 뜻한다. 객체는 클래스에서 생성되는데, 속성과 기능을 정의해야 한다. 클래스 하나를 만들어 놓으면 원하는 수의 객체를 생성할 수 있다. 객체 사용은 코드 재사용과 모듈화에 좋다는 장점이 있다. class (클래스) class (클래스)는 class 키워드와 속성(변수), 그리고 기능(함수)를 이용해서 만든다. class Car: # 클래스 선언 def __init__(self, col, len): # 생성자, 속성 self.color = col self.length = len def doStop(s..

파이썬 중급 - 사용자/math/random/time 모듈, 패키지

파이썬 기초에서 모듈에 대해 잠깐 학습했었다. 조금 더 깊이 살펴보면 파이썬의 모듈은 내부 모듈, 외부 모듈, 사용자 모듈로 구분할 수 있다. 내부 모듈은 파이썬 설치 시에 기본적으로 사용할 수 있는 모듈이고 외부 모듈은 별도 설치 후 사용할 수 있는 모듈이다. 사용자 모듈은 말 그대로 사용자가 직접 만든 모듈을 뜻한다. 사용자 모듈 사용자 모듈을 만들기 위해서는 미리 만들어놓은 파일이 필요하다. 먼저, 파일 하나에 사용할 함수를 선언해두고 저장한다. 이때, 파일의 제목은 제목.py가 될텐데, 여기서 입력한 제목이 모듈명이 되는 것이다. 예를 들어 calculator라는 제목으로 파일을 만들었다고 가정하면 모듈을 사용하는 방법은 다음과 같다. 우선, 모듈을 사용할 새로운 파일을 생성하여 import ca..

파이썬 중급 - 함수, 전역 변수와 지역 변수, 중첩 함수, lambda 키워드

함수 파이썬의 함수는 수학의 함수와 동일하다. 데이터를 함수에 입력하면 함수에 따라 연산하여 값을 출력한다. 함수는 파이썬에서 기본적으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자 함수가 있다. 내장함수는 이제껏 학습한 print(), input(), sort(), reverse(), clear() 등이 있으며, 사용자 함수는 def 라는 키워드, 함수명, 콜론(:), 들여쓰기를 이용하여 선언할 수 있다. 함수명을 작명하는 방법은 변수명과 비슷하지만, 변수와는 달리 기능을 의미하는 단어로 작성해야 이후에 알아보기가 쉽다. 학습을 위해 내장 함수와 사용자 함수를 구분했지만 보통은 함수라는 명칭으로 통일된다. 사용자 함수의 작성 예시는 다음과 같다. def addCal(): n1 = int(input..

파이썬 기초 - 조건식, 조건문, 반복문

조건식 조건식이란 어떤 조건에 따라 실행이 분기되는 식이다. A if 조건식 else B 라는 코드는 조건식의 결과가 True일 경우 A를 실행, False일 경우 B를 실행한다. 모든 조건식(삼항연산자)은 if ~ else문으로 변경할 수 있으나, 모든 if ~ else문 또한 조건식으로 변경할 수 있는 것은 아니다. 실행문이 간단하지 않으면 조건식으로 코딩하기가 어렵다. 조건문 조건문이란 특정 조건에 따라 프로그램을 분기하는 코드이다. 조건문 뒤에 콜론(:)을 붙여주고, 다음 라인부터는 공백문자 또는 탭으로 들여쓰기를 해주어야 한다. 공백문자의 경우 몇 개를 입력하든 상관은 없으나, 모든 들여쓰기에서 그 갯수가 동일해야만 한다. 일반적으로는 4개의 공백문자를 넣는다. 그렇게 들여쓰기 된 실행문은 코드..

파이썬 기초 - 연산자 (산술, 할당, 비교, 논리), operator 모듈

연산자란 result = data1 + data2 의 코드가 있다고 할 때, =와 +를 연산자라고 하며, data1과 data2는 피연산자라고 한다. 연산자의 종류는 다음과 같다. - 산술 연산자: +, -, *, /, %, //, ** - 할당 연산자: =, +=, -=, *=, /=, %=. //= - 비교 연산자: >, >=, 65 print(‘65 -> {}’.format(chr(65))) # 65 -> A 문자열끼리 비교하는 경우 == 또는 !=의 연산자만 사용할 수 있다. 주의할 점은 글자가 하나라도 다르면 두 문자열은 서로 다른 문자열로 취급된다는 것이다. 논리 연산자 논리 연산자의 종류로는 and, or, not이 있다. A and B는 A와 B 모두 True인 경우만 결과값으로 True가..