Python 7

[Python] Pypy와 CPython (구현체)

프로그래밍 언어의 구현체 (Implementation) 우리는 파이썬을 이야기할 때 종종 언어 뿐만 아니라 구현체를 포함하여 말한다. 파이썬은 다양하게 구현될 수 있는 언어의 스펙일 뿐이다. When we speak of Python we often mean not just the language but also the implementation. Python is actually a specification for a language that can be implemented in many different ways. 프로그래밍 언어에서 말하는 구현체란, 위와 같이 실제 언어를 구현한 방식을 말합니다. 언어라는 것은 문법과 같이 정의된 추상적인 틀이며, 이에 대한 구현에 따라 동작 방식도 성능도 달라집..

CS/언어 2021.10.01

[파이썬 알고리즘 인터뷰] 2부 - 파이썬 (~ 5장 - 리스트, 딕셔너리)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 5장 리스트, 딕셔너리 리스트와 딕셔너리는 코딩 테스트에서 무조건 사용 문제 풀이에 자유자재로 활용할 수 있도록 숙지 1) 리스트 리스트란? 순서대로 저장하는 시퀀스 - 입력 순서가 유지됨 값을 변경할 수 있는 Mutable 동적 배열로 구현됨 - C++의 Vector, Java의 ArrayList 매우 다양한 기능을 제공 - 스택/큐로써의 기능도 모두 제공 - 이는 다른 언어에 비해 매우 유리한 조건 큐로써 사용할 시 주의 - pop(0)는 O(n)을 소요 - 가장 앞의 요소를 제외한 나머지 요소들을 copy해야하기 때문 - Deque를 대산 사용 (추후 다룰 예정) min/max도 O(n) - 순차탐색을 하는듯 -..

책읽기 2021.07.12

Python의 Hashable (Dictionary의 key가 되는 기준은 무엇일까?)

Dictionary의 key는 Immutable 객체만 가능? Python에서 dictionary(dict)는 강력한 기능을 가지고 있다. dict의 정수, 문자열, 심지어 tuple도 key로 들어갈 수 있다. d = dict() d[1] = 1 d["hi"] = 2 d[(1,2,3)] = 3 "파이썬 알고리즘 인터뷰"라는 책을 읽으면서 다음과 같은 문구가 있었다[1]. 특히 파이썬의 딕셔너리는 해시할 수만 있다면 숫자뿐만 아니라, 문자, 집합까지 불변 객체를 모두 키로 사용할 수 있다. 나는 이 때 이 문장의 전체를 보지 못하고, 보고싶은 단어만 보았다. 이 문구의 의미가 "dict의 key는 불변 객체만 가능하다"라고 이해했다. 그래서 궁금했다. Immutable 객체만 key가 될 수 있는 이유가..

고민하기 2021.07.12

[파이썬 알고리즘 인터뷰] 2부 - 파이썬 (~ 4장 - 빅오, 자료형)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 4장 빅오, 자료형 1) 빅오 빅오란? 입력값이 무한대로 향할 때 함수의 상한을 설명하는 수학적 표기법 = 점근적 실행 시간(Asymptotic Running Time)을 표기할 때 가장 널리 쓰이는 수학적 표기법 중 하나 시간 복잡도(Time Complexity) = 점근적 실행 시간 어떤 알고리즘을 수행하는 데 걸리는 시간을 설명하는 계산 복잡도(Computational Complexity) 빅오로 시간 복잡도를 표현할 때는 최고차항만 표기, 계수 무시 (ex) $$4n^2+3n+4 \approx O(n^2)$$ 빅오의 종류 1 O(1) 해시 테이블 상수 시간 매우 가치있음 2 O(log n) 이진 탐색 입력에 영..

책읽기 2021.07.09

구글 파이썬 스타일 가이드 - 2.12 Default Argument Values (Mutable vs Immutable)

1. 구글 파이썬 가이드 - Default Argument Values "파이썬 알고리즘 인터뷰"라는 책을 쭉 읽으면서 그냥 넘어가지 못한 구간이 있다. 구글 파이썬 스타일 가이드를 설명하던 중, 아래와 같은 글귀와 코드를 보여주었다. 함수의 기본 값으로 가변 객체(Mutable)를 사용하지 않아야 한다. # No def foo(a, b=[]): pass # No def foo(a, b: Mapping = {}): pass # Yes def foo(a, b=None): if b is None: b = [] # Yes def foo(a, b: Optional[Sequence] = None): if b is None: b = [] 위 코드에서 "No"라는 comment에 적힌 함수들을 사용하지말고, "Yes..

고민하기 2021.06.29

[파이썬 알고리즘 인터뷰] 2부 - 파이썬 (~ 3장 - 파이썬)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 3장 파이썬 파이썬은? 네덜란드 컴퓨터 과학자 귀도 반 로섬 (Guido Van Rossum)이 만듦 파이썬의 원칙 읽기 쉬워야함 - 중괄호 -> 인덴트 사용자가 모듈패키지 생성/배포가 가능해야함 - pip를 통해 패키지 인덱스 제공 인공지능을 주도하는 표준 언어 연구개발의 주력 언어 1) 파이썬에 대한 이해 파이썬에 대한 깊은 이해가 필요함 언어의 세부 구현을 상세히 알아야 문제를 제대로, 신속하게, 정확하게 풀 수 있음 제대로 사용법을 숙지해야 제대로 사용할 수 있음 파이썬 공식 인터프리터 Cpython (Pypy도 있음) 2) 파이썬 문법 ※ 요약 인덴트 : 4칸 공백 네이밍 컨벤션 : 스네이크 케이스 타입 힌트..

책읽기 2021.06.29

[파이썬 알고리즘 인터뷰] 1부 - 코딩 인터뷰

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 1장 코딩 인터뷰 1) 코딩 인터뷰 종류 오프라인 코딩 인터뷰 면접관들 앞에서 오프라인으로 라이브 코딩하는 인터뷰 오프라인 화이트보드 코딩 인터뷰 면접관들 앞에서 화이트보드를 이용하여 설명/구현하는 인터뷰 온라인 코딩 인터뷰 면접관들 앞에서 온라인으로 라이브 코딩하는 인터뷰 온라인 코딩 테스트 플랫폼을 통해 문제를 푸는 테스트 ※ 라이브 코딩 / 화이트 보드 / 코딩 테스트 2) 코딩 인터뷰를 위한 온라인 테스트 플랫폼 해커랭크 (카카오) 코딜리티 (네이버) 리모트인터뷰 프로그래머스 (대부분 기업들이 많이 사용하는듯, 네이버도 최근에 사용) 리트코드 (해당 책에서 사용) 3) 온라인 코딩 테스트 사전 준비사항 연습장 ..

책읽기 2021.06.23