본문 바로가기

Python

(238)
[그리디 알고리즘] 만들 수 없는 금액 - 파이썬(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..
[최단 경로 알고리즘] 전보 - 파이썬(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 ..
[최단 경로 알고리즘] 가장 빠른 길 찾기 최단 경로 알고리즘 - 말 그대로 가장 짧은 경로를 찾는 알고리즘 - '한 지점에서 다른 특정 지점까지의 최단 경로', '모든 지점에서 다른 모든 지점까지의 최단 경로' 등의 사례가 존재 - 최단 경로를 모두 출력하는 문제보다는 단순히 최단 거리를 출력하도록 요구하는 문제가 많음 - 그리디 알고리즘과 다이나믹 프로그래밍 알고리즘이 최단 경로 알고리즘에 그대로 적용됨 음의 간선 - 0보다 작은 값을 가지는 간선 - 현실 세계의 길(간선)은 음의 간선으로 표현되지 않으므로 다익스트라 알고리즘은 실제로 GPS 소프트웨어의 기본 알고리즘으로 채택됨 다익스트라 최단 경로 알고리즘 - 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘 - '음의 ..