본문 바로가기

Python_programming

(24)
파이썬 알고리즘 기초 - 큐(Queue) 이번 시간에는 '큐' 라고 하는 데이터 구조를 다뤄 보겠습니다. 그림으로 먼저 보겠습니다. 직사각형 타일이 데이터라고 생각하시면 됩니다. '큐'를 표현하는 그림들은 많이 있습니다. 데이터를 하나하나 넣었습니다. 앞으로 여러 데이터 구조를 살펴볼 것입니다. 각 구조마다 핵심적인 특성을 말하는 약어가 있습니다. 핵심은 FIFO(First In First Out) 입니다. LILO(Last-In, Last-Out) 랑 같은 의미입니다. 보통 FIFO 로 많이 얘기합니다. 위 그림을 보면 31이라는 데이터가 제일 먼저 들어갔고 제일 우측에 있습니다. 입구는 insert 출구는 delete로 위 그림에는 나와 있는데요. 6개의 데이터를 넣었는데 제일 먼저 들어간 31이 제일 먼저 나오는 특성을 갖고 있는 것이 '..
파이썬 알고리즘 기초 - 하노이의 탑 (재귀 알고리즘) 하노이의 탑(Tower of Hanoi)은 퍼즐의 일종이다. 세 개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것이다. 한 번에 하나의 원판만 옮길 수 있다. 큰 원판이 작은 원판 위에 있어서는 안 된다. 하노이의 탑의 원리(애니메이션) 하노이의 탑 문제는 재귀 호출을 이용하여 풀 수 있는 가장 유명한 예제 중의 하나이다. 그렇기 때문에 프로그래밍 수업에서 알고리즘 예제로 많이 사용한다. 일반적으로 원판이 n개 일 때, 2^n -1(=2의 n승 빼기 1)번의 이동으로 원판을 ..
파이썬 알고리즘 기초 - 이진 탐색(binary search) 이번 포스팅도 프로그래머스의 '어서와! 자료구조와 알고리즘은 처음이지?' 강의의 3강인 정렬과 탐색을 정리하는 내용입니다. 오늘은 이진 탐색에 대해 다뤄볼건데요. 그전에 메서드 몇 가지 알아보겠습니다. 1. 파이썬 정렬 메서드 2가지 1-1) sorted - 파이썬 내장 함수 , 정렬된 새로운 리스트를 얻어냄 sorted() 메서드를 이용하면 위 코드와 같이 정렬한 컬렉션 타입의 자료형을 리턴해줍니다. 1-2) sort() - 리스트의 메서드. 해당 리스트를 정렬한다. 리스트의 메서드인 .sort() 를 써도 됩니다. 이거의 경우 별도로 return 하지 않고 자체적으로 기존 리스트를 정렬한 뒤 그대로 반영합니다. +) 내장 함수와 메서드의 차이가 조금씩 감이 오시나요? reverse = True 위 인..
파이썬 알고리즘 기초 - 선형 배열 (feat. 시간 복잡도) 이번 시간부터 파이썬으로 프로그래밍 알고리즘을 다뤄보려고 합니다. 제가 워낙 약한 부분이라서 공부하면서 정리하고자 하니 첨언이나 조언 있으시면 언제든지 댓글 주시면 감사하겠습니다 :) 지금부터 쓰는 이 글을 프로그래머스에서 하는 '어서와! 자료구조와 알고리즘은 처음이지?' 강의를 듣고 문제를 풀면서 이에 대한 내용들을 정리를 위한 글입니다. 오늘은 선형 배열에 다뤄보려고 합니다. 1) Linked Array 선형 배열은 데이터들이 선 (line) 처럼 일렬로 늘어선 형태를 말합니다. 보통 프로그래밍에서 배열 (array) 이라고 하면 같은 종류의 데이터가 줄지어 늘어서 있는 것을 뜻하는데요, Python 에서는 서로 다른 종류의 데이터 또한 줄세울 수 있는 리스트 (list) 라는 데이터형이 있습니다. ..
파이썬 객체 내부 검사 - dir, type, id, __dict__ ,네임 스페이스 파이썬은 클래스와 인스턴스를 알아보기 위해 내장에서 제공하는 함수와 클래스가 있습니다. 1) 객체 내부 검사 dir 함수 - 클래스와 인스턴스 내부에서 사용할 수 있는 정보를 확인한다. id 함수- 클래스와 인스턴스의 레퍼런스를 정수로 보여준다. type 클래스- 클래스와 인스턴스가 누구에 의해 만들어졌는지에 대한 정보를 확인 a 라는 변수에 type 클래스를 입력하면 str 이라고 나옵니다. 보통 이걸 보면 'a 라는 변수는 class 가 str 이구나!' 라고만 생각하실 수 있는데요. 정확히 말하면 a 라는 변수는 RoBeRt 라는 리터럴이 할당되었고, str 이라는 클래스에 의해 만들어졌다. 그리고 a 라는 변수가 사용할 수 있는 메서드가 나옵니다. 저는 upper 라고 하는 메서드를 썼는데 결과는..
파이썬 클래스 사용하기3: 클래스 상속, super,메서드 오버라이딩, 다중 상속, 추상 클래스 이번에는 클래스 상속(inheritance)을 사용해보겠습니다. 상속은 무언가를 물려받는다는 뜻입니다. 그래서 클래스 상속은 물려받은 기능을 유지한채로 다른 기능을 추가할 때 사용하는 기능입니다. 여기서 기능을 물려주는 클래스를 기반 클래스(base class), 상속을 받아 새롭게 만드는 클래스를 파생 클래스(derived class)라고 합니다. 보통 기반 클래스는 부모 클래스(parent class), 슈퍼 클래스(superclass)라고 부르고, 파생 클래스는 자식 클래스(child class), 서브 클래스(subclass)라고도 부릅니다. 클래스 상속은 다음과 같이 클래스를 만들 때 ( )(괄호)를 붙이고 안에 기반 클래스 이름을 넣습니다. class 기반클래스이름: 코드 class 파생클래스..
파이썬 클래스 사용하기2: 클래스 속성과 정적, 클래스 메서드 앞에서 인스턴스 속성을 사용하는 법과 self 등에 대해 배웠습니다. 이번 시간에는 클래스 속성이랑 정적, 클래스 메서드 이렇게 3가지를 배워 보겠습니다! 사실 속성에는 클래스 속성과 인스턴스 속성 2가지 종류가 있습니다. init 메서드에서 만들었던 속성은 인스턴스 속성입니다. 이번에 배울 클래스 속성은 class 클래스이름: 속성 = 값 형태로 입력해주시면 됩니다. james.bag 과 maria.bag을 출력해보면 넣었던 물건이 합쳐져서 나옵니다. 즉, 클래스 속성은 클래스에 속해 있으며 모든 인스턴스에서 공유됩니다. put_bag 메서드에서 클래스 속성 bag에 접근할 때 self를 사용했습니다. 사실 self는 현재 인스턴스를 뜻하므로 클래스 속성을 지칭하기에는 조금 모호합니다. 그래서 클래스 ..
파이썬 클래스 사용하기: 인스턴스, self 이번 시간에는 파이썬에서 클래스 사용하는 법에 대해서 다뤄 보겠습니다. 버튼, 체크 박스처럼 특정한 개념이나 모양으로 존재하는 것을 객체(object)라고 부릅니다. 그리고 프로그래밍으로 객체를 만들 때 사용하는 것이 클래스입니다. 파이썬에서 클래스는 class 클래스 이름: def 메서드(self): 코드 이렇게 선언합니다. 선언한 클래스를 사용하려면 인스턴스화 해줘야합니다. 위처럼 변수에 할당하는 것이 인스턴스를 생성하는 것입니다. 인스턴스 뒤에 .(점)을 붙 이고 메서드를 호출하면 클래스 안에 정의된 함수(=속성이라고 부르겠습니다)를 사용하게 됩니다. 이를 메서드라고 부르고 인스턴스를 통해 호출하는 메서드는 인스턴스 메서드라고 부릅니다. int, list, dict 등도 사실 클래스입니다. 우리는 ..