개발공부27 [Python] heapq 설명 및 활용 시 유의사항( 힙큐/우선순위큐 ) 힙( heap )이란? 최대/최솟값을 빠르게 찾기 위한 자료구조이다. heap을 사용하기위한 python 내장 모듈이 heapq이며 우선순위큐를 구현한 모듈이라고 봐도 된다. heap은 완전이진트리 개념을 기반으로 최상단 부모(root) 노드에 최댓값/최솟값이 오도록 한다. 즉, list와 다르게 sort를 해주지 않아도 자동으로 최대/최소값을 찾아 반환할 수 있다. 하지만, 형제 노드(최대/최소를 제외한 다른 순서) 간에는 순서가 없기때문에 유의하여 사용해야 한다. 힙은 두 종류가 있는데, 파이썬에서는 최소 힙을 기본으로 한다. 최소 힙 : 부모 노드의 값이 자식 노드보다 작은 힙 ( pop시 최솟값 산출 ) 최소 힙 : 부모 노드의 값이 자식 노드보다 큰 힙 힙큐( heapq ) 일반 예시 - 최소힙.. 2023. 1. 8. [Python] continue / pass / break / return 기능과 이중 반복문 예시 [요약] continue : 아래 코드를 실행하지 않고 가장 가까운 loop로 바로 가기.(이중 반복문 사용 시 주의 필요) pass : 진행할 코드가 없음을 의미. class 선언이나 if문을 명시적으로 나타내고 싶을 때 사용. break : 반복문 종료하기 (break는 반복문 하나에만 적용. loop 마다 break를 따로 써야함. ) return : 함수를 끝내고 값을 반환. 반복문에서 특정 조건을 만족 시 return 사용 가능. 1. continue 반복문에서 특정 조건을 만족했을 시 아래 code를 실행하지 않고 가장 가까운 다음 loop로 바로 넘어가기 위한 명령이다. 단순 for 문 예시 for i in range(10): if i%2 == 0 : continue print(i) 0에서 .. 2023. 1. 6. [SWEA 1258][Python][S/W 문제해결 응용] 7일차 - 행렬찾기 코드 ## SWEA 1258 T = int(input()) for test_case in range(1, T+1): N = int(input()) arry = [list(map(int,input().split())) for _ in range(N)] mat_dict = {} ## 문제에서 r,c에 중복이 없다고 했으므로, dict의 key로 활용 가능. result_arry = [] for i in range(N): cnt = 0 for j in range(N) : if arry[i][j] > 0 : cnt += 1 elif arry[i][j] == 0 and cnt > 0 : ## dict key : col , dict value : row mat_dict[cnt] = mat_dict.get(cnt,0.. 2023. 1. 1. [SWEA 1251][Python][S/W 문제해결 응용] 4일차 - 하나로 코드1 : prim 풀이 ## SWEA 1251 def prim(start): global result dist_arry[start] = 0 for _ in range(N): local_min = float("inf") for i in range(N): if visited[i] == 0 and dist_arry[i] < local_min : min_node = i local_min = dist_arry[i] visited[min_node] = 1 result += E*local_min for j in range(N): if visited[j] == 0 : tmp = (x_arry[min_node] - x_arry[j])**2 + (y_arry[min_node] - y_arry[j])**2 dist_arr.. 2023. 1. 1. 이전 1 2 3 4 5 6 7 다음