본문 바로가기

알고리즘 (Python)

(259)
[그리디 알고리즘] 만들 수 없는 금액 - 파이썬(python) 만들 수 없는 금액 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) unit = list(map(int, input().split())) unit.sort() result = 1 for i in unit: if result < i: break result = result + i print(result) 예시 n = int(input()) data = list(map(int, input().split())) data.sort() target = 1 for x in data: # 만들 수 없는 금액을 찾았을 때 반복 종료 if target < x: break target += x # 만들 수 없는 금액 출력 print(target) 해설..
[그리디 알고리즘] 문자열 뒤집기 - 파이썬(python) 문자열 뒤집기 난이도 : 下 풀이 시간 : 20분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 s = input() allzero, allone = 0, 0 for i in range(len(s)-1): if s[i] != s[i+1]: if s[i+1] == '1': allzero = allzero + 1 else: allone = allone + 1 print(min(allzero, allone)) 예시 data = input() count0 = 0 # 전부 0으로 바꾸는 경우 count1 = 0 # 전부 1로 바꾸는 경우 # 첫 번째 원소에 대해서 처리 if data[0] == '1': count0 += 1 else: count1 += 1 # 두 번째 원소부터 모든 원소를 확인하며 for ..
[그리디 알고리즘] 곱하기 혹은 더하기 - 파이썬(python) 곱하기 혹은 더하기 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 s = input() result = int(s[0]) for i in range(1, len(s)): if int(s[i])
[그리디 알고리즘] 모험가 길드 - 파이썬(python) 모험가 길드 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) horror = list(map(int, input().split())) horror.sort() count, result = 0, 0 for i in horror: count = count + 1 if count >= i: result = result + 1 count = 0 print(result) 예시 n = int(input()) data = list(map(int, input().split())) data.sort() result = 0 # 총 그룹의 수 count = 0 # 현재 그룹에 포함된 모험가의 수 for i in data: # 공포도를 낮은 것부터 하나씩..
[그래프 이론 알고리즘] 커리큘럼 - 파이썬(python) 커리큘럼 난이도 : 上 풀이 시간 : 50분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 from collections import deque import copy v = int(input()) indegree = [0] * (v+1) graph = [[] for i in range(v+1)] time = [0] * (v+1) for i in range(1, v+1): data = list(map(int, input().split())) time[i] = data[0] for x in data[1:-1]: indegree[i] = indegree[i] + 1 graph[x].append(i) def topology_sort(): result = copy.deepcopy(time) q = dequ..
[그래프 이론 알고리즘] 도시 분할 계획 - 파이썬(python) 도시 분할 계획 난이도 : 中 풀이 시간 : 40분 시간 제한 : 2초 메모리 제한 : 256 MB 해답 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n, m = map(int, input().split()) parent = [0] * (n+1) edges = [] result = 0 for i in range(1, n+1): pa..
[그래프 이론 알고리즘] 팀 결성 - 파이썬(python) 팀 결성 난이도 : 中 풀이 시간 : 20분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n, m = map(int, input().split()) parent = [0] * (n+1) for i in range(0, n+1): parent[i] = i for i in range..
[그래프 이론 알고리즘] 다양한 그래프 알고리즘 그래프 이론 알고리즘 - DFS/BFS 알고리즘과 최단 경로 알고리즘에서 다룬 내용은 모두 그래프 알고리즘의 한 유형 - 크루스칼 알고리즘은 그리디 알고리즘, 위상 정렬 알고리즘은 큐 자료구조 혹은 스택 자료구조를 활용 - 문제에서 서로 다른 객체가 연결되어 있다는 이야기를 들으면 가장 먼저 그래프 알고리즘을 떠올려야 함 서로소 집합 자료구조 (Union-Find 자료구조) - 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 - union과 find 2개의 연산으로 조작 가능 - union 연산은 2개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산 - find 연산은 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산 - 트리 자료구조를 이용하여 집합을 표현 서로소 집합 ..
[최단 경로 알고리즘] 전보 - 파이썬(python) 전보 난이도 : 上 풀이 시간 : 60분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 import heapq import sys input = sys.stdin.readline INF = 987654321 n, m, start = map(int, input().split()) graph = [[] for in range(n+1)] distance = [INF] * (n+1) for _ in range(m): x, y, z = map(int, input().split()) graph[x].append((y, z)) def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heap..
[최단 경로 알고리즘] 미래 도시 - 파이썬(python) 미래 도시 난이도 : 中 풀이 시간 : 40분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 INF = 987654321 n, m = map(int, input().split()) graph = [[INF] * (n+1) for _ in range(n+1)] for a in range(1, n+1): for b in range(1, n+1): if a == b: graph[a][b] = 0 for _ in range(m): a, b = map(int, input().split()) graph[a][b] = 1 graph[b][a] = 1 x, k = map(int, input().split()) for k in range(1, n+1): for a in range(1, n+1): for b in ..