https://school.programmers.co.kr/learn/courses/30/lessons/42861 섬 연결하기 문제의 경우, n개의 섬이 있고, costs에 [섬1, 섬2, 비용] 형태로 연결 비용이 주어짐.모든 섬을 최소 비용으로 연결하는 방법을 찾아야 함.MST(최소 신장 트리, Minimum Spanning Tree) 알고리즘(Kruskal or Prim)으로 해결함최소 비용으로 연결해야 하므로 사이클이 생겨서는 안됨📌 사이클이 형성되면 안 되는 이유 (MST에서)➡ MST(최소 신장 트리, Minimum Spanning Tree)는 "모든 노드를 연결하면서도, 사이클이 없는 트리"여야 함.➡ 즉, 같은 노드를 두 번 방문하는 "순환 경로(사이클)"가 있으면 트리가 아님!1. MS..

https://school.programmers.co.kr/learn/courses/30/lessons/42861📌 MST (Minimum Spanning Tree, 최소 신장 트리)란?➡ "모든 정점을 연결하는 간선들의 부분집합 중, 최소 비용으로 연결할 수 있는 트리" ➡ Greedy(탐욕법) 알고리즘을 기반으로 동작 1. MST(최소 신장 트리)의 특징https://www.geeksforgeeks.org/spanning-tree/ Spanning Tree - GeeksforGeeksA Computer Science portal for geeks. It contains well written, well thought and well explained computer science and progra..
🔹1. 큐(Queue) https://ko.wikipedia.org/wiki/%ED%81%90_%28%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0%29 출처:위키백과 FIFO(First In, First Out, 선입선출) = 먼저 들어온 데이터가 먼저 나가는 "공정한" 자료 구조라고 할 수 있다 ex. 줄서기✅ 큐의 특징먼저 넣은 데이터가 먼저 삭제됨 (FIFO)삽입(Enqueue): 큐의 끝에서 추가삭제(Dequeue): 큐의 앞에서 제거✅ 파이썬에서 큐 구현 방법collections.deque 사용 (가장 효율적, 추천! ✅)queue.Queue 사용 (멀티스레드 환경에서 사용 가능)list 사용 (비효율적 ❌, pop(0)은 O(N)이므로 추천하지 않음) from co..
✅ 1️⃣ 기본적인 방향 설정우리가 보통 사용하는 2D 좌표계에서의 방향 이동에 대해 알아보자2차원 리스트(행렬)에서 이동할 때는 (행, 열)로 움직이게 된다방향이동 (행 변화, 열 변화)L (왼쪽)(0, -1)R (오른쪽)(0, +1)U (위쪽)(-1, 0)D (아래쪽)(+1, 0)👉 즉, 이동하면 행(row)과 열(col)이 변화함 # 방향 정의 (L, R, U, D 순서)dx = [0, 0, -1, 1] # 행 변화량dy = [-1, 1, 0, 0] # 열 변화량move_types = ['L', 'R', 'U', 'D']# 초기 위치 (예: (x, y) = (2, 2)에서 시작)x, y = 2, 2# 이동할 명령어 리스트commands = ['L', 'D', 'D', 'R', 'U'] # ..
https://www.acmicpc.net/problem/10989 import sysN = int(input())arr = [int(sys.stdin.readline().strip()) for _ in range(N)]arr.sort()print("\n".join(map(str,arr))) 시간 초과 문제가 발생한다 1. sort 함수 사용2. input() 사용 등의 이유라고 함 이를 해결하기 위해서는, import sys# 입력 빠르게 받기input = sys.stdin.readline# 입력받기N = int(input()) count = [0] * 10001 # 1부터 10,000까지 등장 횟수 저장# 숫자 카운트for _ in range(N): num = int(input()) c..
https://www.acmicpc.net/problem/2869import math#A 달팽이가 낮에 올라가는 거리#B 밤에 미끄러지는 거리#V 높이가 V미터인 막대A,B,V = map(int, input().split())#하루에 A-B 만큼 올라감 +1은 마지막날을 의미함# V-A만큼 올라가는데 필요한 일 수를 계산함days = (V-A) // (A-B) +1if (V-A) % (A-B) != 0: # 나머지가 있다면, 하루를 추가함 days += 1 print(days) 만약 오류가 발생한다면,try: # A 달팽이가 낮에 올라가는 거리 # B 밤에 미끄러지는 거리 # V 높이가 V미터인 막대 A, B, V = map(int, input().split()) #..
https://www.acmicpc.net/problem/2609 import mathdef solution(): a,b = map(int, input().split()) #최대 공약수 gcd_value = math.gcd(a,b) #최소 공배수 lcm_value = (a*b) // gcd_value print(gcd_value) print(lcm_value)최대공약수 (GCD): 두 수의 최대공약수는 두 수가 나누어 떨어지는 가장 큰 수입니다. 이를 구하는 효율적인 알고리즘으로 유클리드 알고리즘을 사용할 수 있습니다. 두 수 a와 b에 대해, gcd(a, b)는 다음과 같이 구할 수 있습니다:gcd(a, b) = gcd(b, a % b)이때, ..
https://www.acmicpc.net/problem/1546 def solution(): N=int(input()) # 시험 본 과목의 개수 scores = list(map(int,input().split())) # 시험 점수 M = max(scores) # 성적 중 최대값 new_score = [(score / M) * 100 for score in scores] new_average = sum(new_score)/N print(new_average)