언어
-
Deque언어/파이썬 2021. 1. 16. 18:56
데크는 양쪽에서 삭제와 삽입을 모두 처리할 수 있으며, 스택과 큐의 특징을 모두 갖고 있다. 구현은 배열이나 연결 리스트 모두 가능하지만 이중 연결 리스트로 구현하는 편이 가장 잘 어울린다. 이중 연결 리스트로 구현하게 되면 양쪽으로 head와 tail이라는 이름의 두 포인터를 갖고 있다가 새로운 아이템이 추가될 때마다 앞쪽 또는 뒤쪽으로 연결 시켜주기만 하면 된다. 당연히 연결 후에는 포인터를 이동하면 된다. 파이썬에서는 데크 자료형을 다음과 같이 collections 모듈에서 deque라는 이름으로 지원한다. collections.deque는 그림 10-1과 마찬가지로 이중 연결 리스트로 구현되어 있다. Deque를 사용하면 맨 앞과 맨 뒤에 엔티티를 추가하거나 삭제할 때 모두 O(1)에 실행이 가능..
-
ADT(추상자료형)언어 2021. 1. 15. 15:27
추상자료형이란 어떤 동작을 해야하는지는 정해져 있지만 실제구현은 정의 되지않은 자료형을 말한다. ADT의 반대용어로는 CDT가 있다. CDT란 ADT의 구현을 포함한 자료형을 이야기 한다. 객체지향프로그래밍에서 추상화의 개념을 떠올리면 이해가 좀 더 빠르다. 수상화란 필수적인 속성만 보여주고, 불필요한 정보는 감추는 것을 의미 하는데 이처럼 인터페이스만 보여주고 실제 구현은 보여주지 않는다는 점에서 ADT는 OOP의 추상화와 비슷한 개념이다. 이해가 아직 모호한거 같아서 예시를 들어보자면 Array, List, Map, Queue, Set, Stack, Table, Tree, Vector는 ADT이다. Queue 는 어떤 동작을 해야하는지 정해져 있지만 이것을 구현한 것은 몇십개가 된다. 실생활의 예시를..
-
os.environ언어/파이썬 2021. 1. 14. 17:29
환경 변수 소프트웨어 개발에서 환경 변수는 일반적으로 운영체제 차원에서 설정해주는 변수를 의미한다. 즉, 파이썬 프로그램 안에서 설정되는 변수가 아닌 외부에서 설정되는 변수들을 얘기한다. 어플리케이션 레벨에서 설정하기가 불가능 하거나 어려운 값들을 환경 변수에 저장하는 경우가 많다. 그 예시로 개발모드와 운영모드를 구분하기 위해서 애플리케이션이 돌아가는 환경 자체를 ENV 등의 이름으로 변수화 해야할 때가 있는데 이는 코드 상에 저장하기가 난해하다. 또한 외부 API와 연동하기 위해 사용하는 접근키나 보안키와 같은 인증 정보는 보안 측면에서 코드상에 저장해서는 안된다. 파이썬에서는 개발자들은 실행파일을 실행하기전에 커멘드라인으로 이것들을 주로 미리 세팅을 해놓는다. 또는 이미 os내에서 세팅이 되어있다...
-
변수 스왑언어 2021. 1. 13. 15:27
두 변수를 바꾸는 가장 널리 알려진 방법은 임시 변수를 놓고 이를 활용하는 방법이다. temp = a a = b b= temp 이 방식은 거의 모든 언어에서 활용할 수 있는 기본적인 방식이지만 파이썬은 임시 변수 없이 변수를 스왑할 수 있다. [Python] a : int = 3 b : int = 5 a, b = b, a 다중 할당이라고 불리는 이방식은 파이썬에서 지원하는 매우 강력한 기능이다. 그렇다면 가독성과 더불어 코드의 양까지 줄일 수 있지만 속도 면에서는 어떨까? 맥북에서 실험결과 2개의 방식은 속도차이가 거의 없다는 것을 알 수 있었다. 그렇다면 다른 언어들은 어떨까? [C++] int a = 3; int b = 5; std::swap(a,b); 리턴값 없이 a와 b의 값을 바꿔주는 swap ..
-
== 와 is 의 차이언어/파이썬 2021. 1. 13. 10:01
is는 변수가 같은 Object 를 가르키면 True (같은 Object 인것인지를 확인하기 위해서는 id 함수를 사용하면 된다.) == 는 변수가 같은 Value 를 가리키면 True 이다 또한 신기한 것은 파이썬은 모든것이 다 객체이므로 id 메소드에 숫자를 넣어도 id 값이 나오고 None을 넣어도 id 값이 나오며 이 값은 변하지 않는 값이다. 또한 while 클래스_이름 is not None: 보다는 while not 클래스_이름 : 만 하여도 while 문이 돌아간다. 그 뿐만 아니라 if 문에서도 마찬가지 이다. 즉 조건절, 조건문에서 None은 False의 개념으로 not None 은 True의 개념으로 쓰이는 거 같다. list 에서도 조건문은 작동하는데 만약 list 가 빈상태이면 Fa..
-
with는 왜 쓰는 것일까언어/파이썬 2021. 1. 12. 20:52
with 는 정말 여러방면으로 쓰인다. 대표적인 예로는 파일을 입출력 할 때 많이 쓰이는 것을 알 수 있다. 그렇다면 with는 파일입출력만을 위해서 쓰이는 것일까? 그게 아니라면 어떻게 쓰이고 왜 쓰이는 것일까? 1. 파일 입출력만을 위해 쓰인다. => 아니다. 우선 with를 어떻게 쓰는지 왜 쓰는지 알아야 빠른 이해가 된다. 2. with 는 왜 쓰이는 것일까? => 1. 파일을 다룰때 with 블록을 통해 명시적으로 close() 메소드를 호출하지 않고도 파일을 닫을 수 있다. 2 파일을 닫을때는 파일 내부에 __exit__()가 구현되어있기 때문에 with 블록이 종료될때 자동으로 __exit__() 메소드가 호출되어 파일을 close 하게 된다. 3.클래스를 호출할때도 사용된다.(단 2. 에서..
-
최댓값과 최솟값언어/파이썬 2021. 1. 12. 12:42
최댓값과 최솟값의 초깃값을 지정하는 방법에는 여러 가지가 있다. 우선 첫번째로는 sys를 사용하면 위와 같이 maxsize를 사용하면 된다. 이 경우 9223372036854775808 가 나온다. 그 다음 float()를 사용하여 하는 방법도 있다. 이 경우 "float('inf')"가 생성되는데 이것이 sys.maxsize 보다 크다 하지만 알고리즘을 풀때는 보통 범위가 주어지기 때문에 sys.maxsize만 써도 충분하다. 마지막으로 가장 않좋은 방법인 999999999를 쓰는 방법이 있다. 물론 알고리즘을 풀때 사이즈를 다 정해주어서 크게 상관이 없지만 파이썬의 숫자형은 임의 정밀도 를 지원하며 사실상 무한대의 값을 지원하기 때문에 sys.maxsize를 선언하는것도 그렇게 큰 의미는 없다. 하지..