목록Language (122)
우노
itertools란? itertools는 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리이다. 제공하는 클래스는 매우 다양하지만, 코딩 테스트에서 가장 유용하게 사용할 수 있는 클래스는 permutations, combinations이다. permutations(순열) ex) 4개의 서로 다른 공 중에서 2개를 골라 나열하는 경우의 수 순열은 순서가 중요하므로, A B 와 B A 는 다른 경우로 취급 nPr = n! / (n-r)! combinations(조합) ex) 4개의 공중에서 무작위로 2개의 공을 고르는 경우의 수 조합은 순서가 중요하지 않으므로, A B 와 B A 는 같은 경우로 취급 nCr = n! / ((n-r)! * r!) permutations permutation..
들어가기 앞서 heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공합니다. 통상적으로 heapq 가 PriorityQueue 보다 더 빠릅니다. 해당 포스팅에선, heap 사용법에 대해서만 간단히 다뤄보겠습니다. heapq 에 튜플이 삽입될 경우엔, 튜플의 첫 번째 요소가 정렬의 기준이 됩니다. 예제 코드 import heapq # 기본 배열 생성 q = [] # 우선순위 큐에 요소 삽입 heapq.heappush(q, (4, 10)) heapq.heappush(q, (1, 10)) heapq.heappush(q, (3, 10)) heapq.heappush(q, (2, 10)) print(q) # [(1, 10), (2, 10), (3, 10), (4, 1..
import numpy as np temp = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 평균 np.mean(temp) # 5.5 # 표준편차 np.std(temp) # 2.8722813232690143 # 분산 np.var(temp) # 8.25
들어가기 앞서, 입력 데이터의 개수가 많은 문제를 풀 때, input() 함수를 사용하면, 동작 속도가 느려서 시간 초과로 인한 오답 판정을 받을 수 있습니다. 따라서, 입력 데이터가 많은 문제에는, sys 라이브러리의 readline() 함수를 이용해 시간 초과를 피할 수 있습니다. sys 라이브러리를 사용할 때는, 한 줄을 입력 받고 나서, 반드시 rstrip() 함수를 호출해야합니다. sys.stdin.readline() 으로 입력을 받으면, 입력 후 엔터가 줄 바꿈 기호로 입력되는데, 이 공백 문자를 제거하려면 rstrip() 함수를 사용해야합니다. 예제 코드 한 개의 정수 입력 받기 import sys a = int(sys.stdin.readline().rstrip()) 공백 기준으로 분리된 여..
들어가기 앞서, 해당 포스트에선, Python DIctionary 를 Key, Value 로 정렬하는 방법에 대해서 다루겠습니다. Key 기준 정렬 my_dict = {'c': 3, 'a': 1, 'b': 2, 'e': 1, 'd': 2} # Key 기준 오름차순 정렬 # [('a', 1), ('b', 2), ('c', 3), ('d', 2), ('e', 1)] a = sorted(my_dict.items()) # Key 기준 내림차순 정렬 # [('e', 1), ('d', 2), ('c', 3), ('b'..
들어가기 앞서, 일반적으로 Python 정렬은, sorted() 또는 .sort() 를 사용합니다. 해당 포스트에선, Lambda 를 사용해 여러 조건으로 정렬하는 방법에 대해서 다뤄보겠습니다. 예제 코드 a = [(1, 3), (0, 3), (1, 4), (1, 5), (0, 1), (2, 4)] # 리스트 각 요소의 첫 번째 인자를 기준으로 오름차순 정렬하고, 그 안에선 두 번째 인자를 기준으로 오름차순 정렬합니다. # [(0, 1), (0, 3), (1, 3), (1, 4), (1, 5), (2, 4)] b = sorted(a) # 리스트 각 요소의 첫 번째 인자를 기준으로 내림차순 정렬하고, 그 안에선 두 번째 인자를 기준으로 내림차순 정렬합니다. # [(2, 4), (1, 5), (1, 4), ..
들어가기 앞서, 공백이 없는 연속된 문자열에서 한 글자씩 분리해 리스트로 저장하고 싶다면, 아래 코드와 같이, 해당 문자열을 list 로 변환하면 됩니다. 예제 코드 test = "00110" list(test) # ['0', '0', '1', '1', '0']
들어가기 앞서, 재귀 함수를 이용하는 대표적인 예제로는 팩토리얼 문제가 있습니다. 해당 포스트에서는 팩토리얼 문제를 반복 함수와 재귀 함수로 구현해 비교합니다. 예제 코드 # 재귀 함수 def factorial_recursive(n): if (n
Stack 파이썬에선 Stack을 사용하기 위해 별도의 라이브러리를 사용하지 않아도 됩니다. 기본 List에서 append() 와 pop() 메서드를 이용하면 Stack 자료구조와 동일하게 동작합니다. append() 메서드는 리스트의 가장 뒤쪽에 데이터를 삽입하고, pop() 메서드는 리스트의 가장 뒤쪽에서 데이터를 꺼냅니다. 예제 코드 stack = [] stack.append(1) stack.append(2) stack.pop() stack.append(3) stack.append(4) print(stack) # 최하단 원소부터 출력 print(stack[::-1]) # 최상단 원소부터 출력 Queue 파이썬에선 Queue를 사용하기 위해, collections 모듈에서 제공하는 deque 자료구조..
List Comprehension 이란? 다양한 조건을 사용해, 반복 가능한(Iterable) 오브젝트로 List를 생성할 수 있는 파이썬 문법입니다. 즉, List 를 쉽게 만들 수 있는 방법입니다. 예제 코드 arr = [i for i in range(10)] print(arr) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]