python(21)
-
[python] 사전의 기본값 처리 collections.defaultdict
사전의 기본값 처리 collections.defaultdict 일반적인 dictionary 기본값 처리 숫자 리스트 li = [1,1,2,2,2,3,3,5] 의 출현 횟수를 count하는 경우를 생각해 봅시다. 딕셔너리를 이용해 구할 수 있습니다. 포문을 돌며 딕셔너리에 해당 값이 없을 경우엔 i가 키인 값을 0으로 초기화 해주고 모든 경우에 += 1 해줍니다. li = [1,1,2,2,2,3,3,5] dict = {} for i in li: if i not in dict: dict[i] = 0 dict[i] += 1 print(dict) """ {1: 2, 2: 3, 3: 2, 5: 1} """ if문을 사용해 존재하지 않는 키에 대한 값을 초기화 해주는 이유는 존재하지 않는 키에 접근했을 경우 다음과..
2021.02.16 -
[Python] input()과 sys.stdin
sys.stdin 알고리즘 문제를 풀 때, 파이썬의 input()은 실행시간이 느려서 자주 시간초과가 난다. 이럴때 sys모듈의 stdin을 사용하면 더 빠르게 input이 가능하다.. 고 하는데, 나는 input()과 sys.stdin의 차이점을 알고싶었다. input() vs sys.stdin input() input() 파이썬의 내장함수이고, 공식 문서의 'Built in function'에가면 해당 내용을 읽어 볼 수 있다. input()에 대한 파이썬 공식 문서 If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from ..
2021.02.09 -
[알고리즘] DFS, BFS 구현 (Python)
DFS """ 1 / | \ 2 3 4 | | 5 | / \ / 6 7 """ graph = { 1: [2,3,4], 2: [5], 3: [5], 4: [], 5: [6,7], 6: [], 7: [3], } def recursive_dfs(v, discovered = []): discovered.append(v) # 시작 정점 방문 for w in graph[v]: if not w in discovered: # 방문 하지 않았으면 discovered = recursive_dfs(w, discovered) return discovered def iterative_dfs(start_v): discovered = [] stack = [start_v] while stack: v = stack.pop() if v..
2021.01.27 -
[Python] zip()
Python 내장함수, zip(*iterables) zip(*iterables) zip()은 동일한 개수로 이루어진 자료형을 묶어주는 역할을 한다. 제너레이터로 리턴 되기 때문에, list나 dic 등 으로 변환 해 주어야 한다. list1 = [1,2,3] list2 = ["홍길동", "김철수", "박미애"] zip_list = zip(list1, list2) print(zip_list, type(zip_list)) # 제너레이터로 리턴 print(list(zip_list)) # 리스트로 변환 # dictionary로 변환 dic ={} for i, s in zip(list1, list2): dic[i] = s print(dic) """ [(1, '홍길동'), (2, '김철수'), (3, '박미애')]..
2021.01.26 -
[Python] heapq 모듈
heapq 모듈 힙 자료구조 heapq모듈은 이진 트리(binary tree)기반의 최소 힙(min heap)자료구조 제공. min heap을 사용하면 원소들이 항상 정렬된 상태로 삽입, 삭제되며 min heap에서 가장 작은 값은 언제나 인덱스 0, 즉 이진트리의 루트에 위치. heap 자료구조를 이용해 데이터를 정렬하려면 heap[0]를 루프를 돌아 heappop() 해주면 된다. 모듈 임포트 import heapq 최소 힙 (min heap) 생성 heap = [] 별개의 자료구조가 아닌 리스트를 힙처럼 다룰 수 있도록 하는 것 힙에 원소 추가 - heappush() heap모듈의 heappush()함수를 이용하여 원소를 추가 할 수 있다. 첫번째 인자는 원소를 추가할 대상 리스트이며 두번빼 인자는..
2021.01.19 -
[자료구조] Circle Deque (원형 덱) 구현
Circle Deque (원형 덱) class MyCircularDeque: def __init__(self, k: int): self.q = [None] * (k+1) self.max = k+1 self.front = 0 self.rear = 0 def insert_front(self, value: int): if self.is_full(): print('Deque is Full') else: self.q[self.front] = value self.front = (self.front - 1 + self.max) % self.max def insert_last(self, value: int): if self.is_full(): print('Deque is Full') else: self.rear = (..
2021.01.19