[자료구조] Priority Queue
·
Python 활용하기
Priority QueueFIFO(First In First Out) 형식우선순위가 높은 데이터가 먼저 출력되는 형식Heap최대, 최소를 빠르게 찾기 위한 자료구조배열에서는 $O(n)$이 걸린다면, 힙을 사용하면 $O(logn)$완전이진트리최대힙, 최소힙 두 종류데이터 삽입, 삭제 원리(최소힙) 데이터 삽입 시, 가장 아래에 데이터 저장 후 부모 노드와 비교해가면서 작은 값이 부모 노드에 갈 수 있도록 위치 교환(최소힙) 데이터 삭제 시, 루트 노드를 삭제하고 가장 아래 데이터를 루트 노드로 옮기고, 왼쪽과 오른쪽의 크기와 비교해 더 작은 쪽과 위치 교환import heapqhq = []heapq.heappush(hq, 1)heapq.heappush(hq, 5)heapq.heappush(hq, 3)hq[..
[Programmers] Level 2. 빛의 경로 사이클
·
코딩테스트/Python
🔗 Problem Link 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr❔ThinkingS, L, R로 이루어진 격자각 주어질 때, 빛이 조건을 따라 이동하는 경로 사이클의 길이를 오름차순으로 반환한다.S는 진행 방향 그대로, L과 R은 각각 왼쪽과 오른쪽으로 방향을 전환하여 이동한다.빛의 경로 사이클은 빛이 해당 경로를 따라 이동하다가 다시 처음 이동으로 돌아오는것을 말한다.격자의 끝에서는, 경로를 유지한 채 반대쪽 끝으로 다시 돌아간다. 💻Solution1. 초기 풀이 (class 작성)class LightsCycle(): def __init__(self, board:list): ..
[Baekjoon] 1655. 가운데를 말해요
·
코딩테스트/Python
🔗 Problem Linkhttps://www.acmicpc.net/problem/1655❔ThinkingN개의 수가 차례대로 주어질 때, 현재까지 숫자들의 중앙값을 출력한다.각 숫자는 -10,000이상 10,000이하의 정수이다.💻Solutionimport sysimport heapqinput = sys.stdin.readlinemax_heap = []min_heap = []N = int(input().rstrip())for _ in range(N): num = int(input().rstrip()) heapq.heappush(max_heap, -num) if max_heap and min_heap and (-max_heap[0] > min_heap[0]): heapq...
이미지 분류 모델 작성하기 (feat. wandb)
·
ML_DL/MUJAKJUNG (무작정 시리즈)
목표5가지 class의 이미지를 분류한다. (각각의 이름으로 폴더가 있고, 파일이 나뉘어 있는 형태)f1_score로 모델의 성능을 평가한다. 모델의 학습 과정을 wandb에 기록한다.라이브러리 불러오기import osimport pandas as pdimport numpy as npimport torchfrom torch import nnfrom torch.utils.data import Dataset, DataLoaderfrom torchvision import transformsfrom PIL import Imagefrom efficientnet_pytorch import EfficientNetfrom sklearn.metrics import f1_scorefrom sklearn.model_sele..
[Programmers] Level 2. 당구 연습
·
코딩테스트/Python
🔗 Problem Link 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr❔Thinking칠 당구공의 위치와 맞춰야 하는 당구공의 위치가 주어질 때, 한 번 이상의 쿠션으로 맞추는 최단 거리를 반환한다.당구공이 벽에 맞을 경우, 입사각과 반사각은 같다. (모서리의 경우, 가는 경로 그대로 돌아온다.)당구대의 가로 세로 크기는 1000 이하이며, 맞춰야 하는 당구공은 1000개 이하이다.💻Solutiondef solution(m,n,startX,startY,balls): def dist_calc(x1,y1,x2,y2): return (x1-x2)**2 + (y1-y2)**2 an..
[Baekjoon] 2225. 합분해
·
코딩테스트/Python
🔗 Problem Linkhttps://www.acmicpc.net/problem/2225❔Thinking0부터 N까지의 숫자를 중복하여 K개 뽑아서, 합이 N이 되는 경우의 수를 반환한다.계산의 순서가 다르면 다른 경우로 생각한다. (ex - 1+2, 2+1은 다른 경우)💻SolutionN, K = map(int, input().split())a,b = 1,1for i in range(1, K): a *= N + i b *= iprint((a // b) % 1000000000)🗝️keypoint합이 N이어야 하기 때문에, 공 N개를 K-1개의 칸막이로 구분짓는 경우와 같다고 생각할 수 있다.(n-1+r)! // (n-1)! * (r)!  인 중복 조합의 공식에 대입하면 (N+K-1)! ..