Closed parkjjoe closed 9 months ago
불편을 드려 죄송합니다
해당 글은 전체 공개로 변경되었습니다 감사합니다 :)
안녕하세요, 답변 받은 후 공개된 것 확인했습니다. 그런데 제가 최근에 해당 글의 제목과 태그를 수정했는데, 다시 비공개가 되었습니다. 추가된 단어는 '이코테'입니다. 혹시 다시 공개 변경해 주실 수 있으실까요? 번거롭게 해 드려 죄송합니다.
이용에 불편을 드려서 죄송합니다. 해당 게시물은 공개로 다시 변경 드렸습니다.
spam filter 기능은 개선 하도록 내부에서 논의가 진행되고 있습니다.
Velog를 이용해주셔서 감사합니다 :)
https://velog.io/@parkjjoe/Python-%EC%A3%BC%EC%9A%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC
위 글을 작성했는데 자동 비공개 처리 됐어요. 필터링된 단어가 뭔지 잘 모르겠습니다.ㅠㅠ 작성한 내용은 아래와 같아요.
참고한 책
이것이 취업을 위한 코딩 테스트다 with 파이썬
코딩 테스트를 준비하여 반드시 알아야 하는 라이브러리는 아래의 6가지 정도이다.
내장 함수
별도의 import 없이 바로 사용할 수 있다.
🔴
sum()
리스트 같은 iterable 객체가 주어졌을 때, 모든 원소의 합을 반환한다.
🟠
min()
,max()
min()
은 파라미터가 2개 이상 주어졌을 때,min()
은 가장 작은 값을 반환하고max()
는 가장 큰 값을 반환한다.🟡
eval()
수학 수식이 문자열 형식으로 주어지면 해당 수식의 계산 결과를 반환한다.
🟢
sorted()
Iterable 객체가 주어졌을 때, 정렬 결과를 반환한다. 정렬 기준은 key 속성으로 명시할 수 있다.
Iterable 객체는 기본으로
sort()
을 내장하고 있어 굳이sorted()
를 사용하지 않고도sort()
로 정렬할 수 있다. 이 경우 리스트 객체의 내부 값이 정렬된 값으로 바로 변경된다.itertools
반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리다.
🔵
permutations
Iterable 객체에서 r개 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 계산해준다. 객체 초기화 이후 리스트 자료형으로 변환하여 사용한다.
🟣
combinations
Iterable 객체에서 r개 데이터를 뽑아 순서 없이 나열하는 모든 경우(조합)를 계산한다. 객체 초기화 이후 리스트 자료형으로 변환하여 사용한다.
🟤
product
Iterable 객체에서 r개 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 계산하나, 중복을 허용한다.
product
객체를 초기화할 때는 뽑고자 하는 데이터의 수를repeat
속성값으로 넣어준다. 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다.⚫
combinations_with_replacement
Iterable 객체에서 r개 데이터를 뽑아 순서 없이 나열하는 모든 경우(조합)를 계산하나, 중복을 허용한다. 객체 초기화 이후에는 리스트를 자료형으로 변환하여 사용한다.
heapq
힙 기능을 위한 라이브러리다. 다익스트라 최단 경로 알고리즘이나 우선순위 큐 기능을 구현하고자 할 때 사용된다.
PriorityQueue
라이브러리를 사용할 수 있지만, 보통heapq
이 더 빠르다.힙은 최소 힙으로 구성되어 있으므로 단순히 원소를 힙에 전부 넣었다가 빼는 것만으로도 O(NlogN)에 오름차순 정렬이 완료된다. 보통 최소 힙 자료구조의 최상단 원소는 항상 가장 작은 원소이기 때문이다.
힙에 원소를 삽입할 때는
heapq.heappush()
를, 원소를 꺼내고자 할 때는heapq.heappop()
을 이용한다.heapq
라이브러리를 이용하여 최대 힙을 구현하려면 원소의 부호를 임시로 변경하는 방식을 사용한다.bisect
이진 탐색을 쉽게 구현할 수 있게 해 준다. 정렬된 배열에서 특정 원소를 찾아야 할 때 효과적으로 사용된다. 중요하게 사용되는 아래 두 함수는 O(logN)에 동작한다.
예를 들어, 정렬된 리스트 [1, 2, 4, 4, 8]이 있을 때, 새롭게 데이터 4를 삽입하려 한다고 가정하면, 소스코드는 아래와 같다.
또한 정렬된 리스트에서 값이 특정 범위에 속하는 원소의 개수를 구할 때도 효과적으로 사용된다.
아래
count_by_range()
함수는 정렬된 리스트에서 값이 [left_value, right_value]에 속하는 데이터의 개수를 반환한다. 즉, 원소의 값이 x일 때, left_value ≤ x ≤ right_value인 원소의 개수를 O(logN)으로 계산한다.collections
유용한 자료구조를 제공하는 표준 라이브러리다.
⚪
deque
설명 | 리스트 | deque -- | -- | -- 가장 앞쪽에 원소 추가 | O(N) | O(1) 가장 뒤쪽에 원소 추가 | O(1) | O(1) 가장 앞쪽에 있는 원소 제거 | O(N) | O(1) 가장 뒤쪽에 있는 원소 제거 | O(1) | O(1)deque
를 이용해 큐를 구현한다. 기본 리스트 자료형에서append()
나pop()
으로 데이터를 삽입, 삭제할 때 가장 뒤쪽 원소를 기준으로 수행된다. 리스트에서 앞쪽에 원소를 삽입하거나 삭제할 때의 시간 복잡도는 O(N)이다.deque
와 시간 복잡도를 비교하면 아래와 같다.단,
deque
는 인덱싱, 슬라이싱 등을 사용할 수 없다.deque
는 스택이나 큐의 기능을 모두 포함한다고 볼 수 있기 때문에 스택이나 큐 자료구조의 대용으로 사용될 수 있다.deque
에서 첫 번째 인덱스에 원소 x를 삽입하려면appendleft(x)
를, 마지막 인덱스에 삽입하려면append(x)
를 사용한다. 첫 번째 원소를 제거할 때는popleft()
를, 마지막 원소를 제거할 때는pop()
을 사용한다.deque
를 큐 자료구조로 이용할 때, 삽입에는append()
를, 제거에는popleft()
를 사용하면 된다.🟥
Counter
등장 횟수를 세는 기능을 제공한다. Iterable 객체가 주어졌을 때, 해당 객체 내부의 원소가 몇 번씩 등장했는지를 알려준다.
math
수학 계산을 요구하는 문제에서 효과적으로 사용할 수 있다.
🟧
factorial(x)
x! 값을 반환한다.
🟧
sqrt(x)
x의 제곱근을 반환한다.
🟨
gcd(a, b)
최대공약수를 구할 수 있다.
🟩 pi, e
또한 파이(pi)나 자연상수 e도 제공한다.