본문 바로가기

백준18

2169번 로봇 조종하기 - Python, DP 출처 : https://www.acmicpc.net/problem/2169 코드 import sys# 입력 처리data = sys.stdin.read().splitlines()N, M = map(int, data.pop(0).split(" "))mars = [list(map(int, data.pop(0).split(" "))) for _ in range(N)]dp = [[[-float('inf')] * 3 for _ in range(M)] for _ in range(N)]# 첫 번째 행 초기화dp[0][0][0] = dp[0][0][1] = dp[0][0][2] = mars[0][0]for y in range(1, M): dp[0][y][0] = dp[0][y][1] = dp[0][y][2] = d.. 2025. 4. 2.
로봇 - Python, 구현 출처 : https://www.acmicpc.net/problem/13901  코드 import sys# 입력 처리data = sys.stdin.read().splitlines()R, C = map(int, data.pop(0).split(" "))room = [[False] * C for _ in range(R)]# 장애물 설치k = int(data.pop(0))for _ in range(k): br, bc = map(int, data.pop(0).split(" ")) room[br][bc] = Truer, c = map(int, data.pop(0).split(" "))commands = list(map(int, data.pop(0).split()))# 1 : up, 2 : down, 3 .. 2025. 3. 26.
트리의 부모 찾기 - Python, BFS, 재귀 깊이 제한 키우기 출처 : https://www.acmicpc.net/problem/11725   코드 import sysfrom collections import deque, defaultdictdef find_parents(N, edges): graph = defaultdict(list) for a, b in edges: graph[a].append(b) graph[b].append(a) parent = [0] * (N + 1) visited = [False] * (N + 1) q = deque([1]) visited[1] = True while q: node = q.popleft() for neighbor in graph[node.. 2025. 3. 7.
동전 1 출처 :  https://www.acmicpc.net/problem/2293 코드 import sys# 입력input_data = sys.stdin.read().splitlines()N, K = map(int, input_data[0].split())coins = list(map(int, input_data[1:]))# 테스트용# N, K = 3, 10# coins = [1, 2, 5]dp = [0] * (K + 1) # dp[i] = i원을 만들 수 있는 조합의 개수dp[0] = 1 # 0원을 만드는 경우는 아무 동전도 사용하지 않는 경우 1가지for coin in coins: for i in range(coin, K + 1): dp[i] += dp[i - coin] # 현재 금.. 2025. 2. 20.
택배 배송 5972번 - Python, 다익스트라(Dijkstra) 출처 : https://www.acmicpc.net/problem/5972 코드 import heapqdef dijkstra(graph, start): INF = float('inf') N = len(graph) distance = [INF] * N distance[start] = 0 pq = [] heapq.heappush(pq, (start, 0)) while pq: now, dist = heapq.heappop(pq) for neighbor, weight in graph[now]: cost = dist + weight if cost   풀이 최소 비용을 구하는 문제이기에 다익스트라를 사용했습니다. .. 2025. 2. 7.
음악프로그램(2623) - Python, 위상정렬 https://www.acmicpc.net/problem/2623   코드 from collections import deque# 입력N, M = map(int, input().split())graph = [[] for _ in range(N + 1)]indegree = [0] * (N + 1)# 그래프 그리기for i in range(1, M + 1): info = list(map(int, input().split())) num_singers = info[0] order = info[1:] for j in range(num_singers - 1): graph[order[j]].append(order[j + 1]) indegree[order[j + 1]] +.. 2025. 1. 24.