파이썬_python
-
Python: 견고한 객체지향 프로그래밍 SOLID 설계원칙 공부하기!Python 2020. 8. 16. 21:26
SOLID 원칙이란? Solid 원칙이란 로버트 마틴이 개발한 객체 지향 프로그래밍 및 설계의 다섯가지 원칙을 말합니다. 프로그래머가 시간이 지나도 유지보수와 확장이 쉬운 시스템을 만들고자할 때 이 원칙들을 함께 적용할 수 있습니다. Solid 원칙은 각 원칙들의 첫 글자를 따서 만들어졌는데 다음과 같이 나뉩니다. Single responsibility principle 단일 책임 원칙 Open/closed principle 개방-폐쇄 원칙 Liskov substitution principle 리스코프 치환 원칙 Interface segregation principle 인터페이스 분리 원칙 Dependency inversion principle 의존관계 역전 원칙 순서대로 알아봅시다. 1. 단일 책임 원..
-
Python: 객체 지향 프로그래밍을 위한 4가지 기본개념 (상속, 추상화, 캡슐화, 다형성)2Python 2020. 8. 16. 16:09
이번 포스팅은 전 포스팅에서 못 다룬 캡슐화와 다형성에 대해서 공부해봅시다. 상속과 추상화에 관한 내용은 아래에 있습니다. Python: 객체 지향 프로그래밍을 위한 4가지 기본개념 (상속, 추상화, 캡슐화, 다형성)1 객체 지향 프로그램을 다루기 위해서는 알아야 할 4가지 기본개념에 대해 알아봅시다. 크게 4가지로 나뉩니다. 상속 추상화 캡슐화 다형성 하나씩 차례로 알아봅시다. 재산상속할때 그 � seungjuitmemo.tistory.com 캡슐화란 인스턴스를 생성했을 때 일부 구현 내용에 대한 외부로부터의 직접적인 엑세스를 차단하는것입니다. 쉽게 말해서 캡슐처럼 객체 내부를 숨겨 외부로부터의 엑세스를 차단하는 것입니다. 객체 내부를 숨기는 법은 크게 두가지가 있습니다. 첫번째는 언더바 ..
-
Python: 객체 지향 프로그래밍을 위한 4가지 기본개념 (상속, 추상화, 캡슐화, 다형성)1Python 2020. 8. 16. 13:34
객체 지향 프로그램을 다루기 위해서는 알아야 할 4가지 기본개념에 대해 알아봅시다. 크게 4가지로 나뉩니다. 상속 추상화 캡슐화 다형성 하나씩 차례로 알아봅시다. 재산상속할때 그 상속입니다. 사전적 의미를 살펴보면 상속은 일정한 친족 관계가 있는 사람사이에서 한 사람이 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 받는 일이라고 합니다. 상속이라는 의미 그대로 상속을 해주는 클래스를 부모 클래스, 상속을 받는 클래스를 자식클래스로 정합니다. 그리고 자식클래스는 부모클래스의 모든것을 물려받습니다. 자식 클래스는 부모 클래스의 함수와 변수를 물려받아 사용하고 필요할때는 부모 클래스의 함수와 변수를 바꾸어 사용하기도 합니다. 함수를 바꾸어 사용하는 것을 오버라이딩(overriding)이라고..
-
Python: 파이썬 데코레이터(Decorator) 공부하기!Python 2020. 8. 15. 20:35
파이썬의 데코레이터 기능에 대해 알아봅시다. Decorate의 사전적 의미는 장식하다, 꾸미다 이러한 의미인데요 그렇다면 파이썬에서 데코레이터(decorator)는 어떠한 역할을 할까요? 데코레이터는 메소드를 꾸밉니다. 좀 더 정확하게 말하면 메소드를 매개변수로 받아서 기존함수에 부가적인 기능을 추가하여 사용할 수 있도록 합니다. 예제를 확인해봅시다. def add_print_to(inner): def outer(): print("함수 시작") inner() print("함수 끝") return outer add_print_to 함수는 inner라는 메소드를 매개변수로 받습니다. inner는 outer()라는 외부 함수로 둘러 쌓이고 "함수 시작" 과 "함수 끝"이라는 출력문으로 꾸며집니다. add_pr..
-
Python: 객체지향언어? 클래스(class)? 기초 공부하기!Python 2020. 8. 15. 17:31
클래스(class)를 공부하기 위해서는 먼저 객체지향언어에 대해서 알아야 합니다. 왜냐하면 파이썬은 순수 객체지향언어이기 때문이죠 우선 객체란 무엇일까요? 객체는 '속성과 동작'을 가진 어떤 것을 의미합니다. 사실상 세상의 모든 것입니다. 길바닥에 굴러다니는 돌도 객체라고 할 수 있고, 이 블로그도 하나의 객체라고 할 수 있습니다. 객체는 각각 속성과 동작을 지니는데 이러한 객체들간의 소통을 담은 언어가 객체지향언어입니다. 예를 들어 기차역에서 승차권을 발매하는 경우, '객체'인 손님과 '객체'인 역무원은 소통을 함으로써 '객체'인 승차권을 얻습니다. 손님은 승차권을 이용해서 '객체'인 기차를 이용합니다. 이렇게 객체들은 소통합니다. 그리고 이러한 소통을 담은 언어가 객체지향언어입니다. 참고로 객체지향 ..
-
알고리즘: 백준 10610번 30 (feat. Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 17:55
백준 10610번 링크입니다. https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶� www.acmicpc.net 30의 배수가 되기 위한 조건은 어떤수 N이 10의 배수이고 3의 배수인 경우이다. N이 10의 배수가 되기 위한 조건 = N안에 0이 포함되어 있으면 성립 N이 3의 배수가 되기 위한 조건 = N의 모든 자리수를 더했을 때 3의 배수이면 성립 이 두 조건만 성립하면 최대값은 N을 그냥 그대로 내림차순 정렬한 값이다. import sys input = sys.std..
-
알고리즘: 백준 2217번 로프 (feat.Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 16:51
백준 2217번 링크입니다. https://www.acmicpc.net/problem/2217 2217번: 로프 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 www.acmicpc.net 로프들이 견딜 수 있는 리스트를 만들어 오름차순으로 배열한다. 만약 10, 25, 30가 로프가 버틸 수 있는 최대중량으로 주어진다면 10 x 3 = 30 25 x 2 = 50 30 x 1 = 30 으로 최대 버틸 수 있는 중량은 50이 된다. ropes[i] * (n - i) 들로 이루어진 리스트의 최대 값을 찾으면 되는 것이다. import sys input ..
-
알고리즘: 백준 1932번 회의실 배정 (feat.Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 16:22
백준 1932번 링크입니다. https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 최대 사용할 수 있는 회의의 수를 구하기 위해서는 가장 빨리 회의가 끝나는 순으로 회의를 나열한다. 회의의 끝나는 시간을 오름차순으로 배열한 후 전 회의의 시작시간과 다음 회의의 끝나는 시간을 비교하여 리스트를 담는다. 처음에 2차원 리스트의 두번째 요소만 배열하기 위해서 이중 for문을 사용했지만 O(n) = n^2가 되기 때문에 시간초과가 되었다. 그래서 lambda x: x[1]를 key로 받아 sort 함으로써 문제를 해결하였다. import sys input = sys.stdi..