전체 글
-
[백준 9370번] 미확인 도착지Coding Test/백준 2021. 1. 16. 13:55
# 문제 내 풀이 import heapq import sys input = sys.stdin.readline INF = int(1e9) def dijkstra(start): distance = [INF] * (n + 1) # 최단 거리 테이블 생성 q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) # 이미 처리한 노드인 경우 무시 if distance[now] < dist: continue # 인접한 노드 확인 for i in graph[now]: cost = dist + i[1] # 현재 노드를 경유하는 것이 최단 거리인 경우, 인접한 노드 정보를 힙에 삽입하고 최단 거리 갱신 if ..
-
[백준 1504번] 특정한 최단 경로Coding Test/백준 2021. 1. 14. 20:31
# 문제 내 풀이 import heapq import sys INF = int(1e9) input = sys.stdin.readline n, e = map(int, input().split()) graph = [[] for _ in range(n + 1)] distance_1 = [INF] * (n + 1) # 출발노드가 1인 최단 거리 테이블 생성 distance_v1 = [INF] * (n + 1) # 출발노드가 v1인 최단 거리 테이블 생성 distance_v2 = [INF] * (n + 1) # 출발노드가 v2인 최단 거리 테이블 생성 # 간선 정보 입력 받기 for _ in range(e): a, b, c = map(int, input().split()) graph[a].append((b, c)..
-
[백준 1753번] 최단경로Coding Test/백준 2021. 1. 14. 20:28
# 문제 내 풀이 import heapq import sys INF = 1e9 # 무한을 나타내는 값으로 10억 설정 input = sys.stdin.readline v, e = map(int, input().split()) k = int(input()) graph = [[] for _ in range(v + 1)] # 인접 리스트 생성 distance = [INF] * (v + 1) # 최단 거리 테이블을 생성하고 무한으로 초기화 # 간선 정보 입력 받기 for _ in range(e): u, v, w = map(int, input().split()) graph[u].append((v, w)) # 다익스트라 알고리즘 정의 def dijkstra(start): q = [] heapq.heappush(q,..
-
[백준 11404번] 플로이드Coding Test/백준 2021. 1. 12. 01:17
# 문제 내 풀이 # 내 풀이 import sys input = sys.stdin.readline INF = int(1e9) n = int(input()) m = int(input()) # 인접 행렬을 생성하고 무한으로 초기화 graph = [[INF] * (n + 1) for _ in range(n + 1)] # 자기 자신으로 가는 비용은 0으로 초기화 for i in range(1, n + 1): graph[i][i] = 0 # 각 간선 정보를 입력 받고 테이블을 초기화 for _ in range(m): a, b, c = map(int, input().split()) # 같은 도시를 향하는 동일한 간선이 존재하는 경우, 비용이 적은 간선을 선택 if graph[a][b] < c: continue gr..
-
[이코테 최단경로] 전보Coding Test/이것이 코딩 테스트다 2021. 1. 11. 23:45
# 문제 어떤 나라에는 N개의 도시가 있다. 그리고 각 도시는 보내고자 하는 메시지가 있는 경우, 다른 도시로 전보를 보내서 다른 도시로 해당 메시지를 전송할 수 있다하지만 X라는 도시에서 Y라는 도시로 전보를 보내고자 한다면, 도시 X에서 Y로 향하는 통로가 설치되어 있어야 한다. 예를 들어 X에서 Y로 향하는 통로는 있지만, Y에서 X로 향하는 통로가 없다면 Y는 X로 메시지를 보낼 수 없다. 또한 통로를 거쳐 메시지를 보낼 때는 일정 시간이 소요된다. 어느 날 C라는 도시에서 위급 상황이 발생했다. 그래서 최대한 많은 도시로 메시지를 보내고자 한다. 메시지는 도시 C에서 출발하여 각 도시 사이에 설치된 통로를 거쳐, 최대한 많이 퍼져나갈 것이다. 각 도시의 번호와 통로가 설치되어 있는 정보가 주어졌..
-
[백준 7562번] 나이트의 이동Coding Test/백준 2021. 1. 10. 22:42
# 문제 내 풀이 from collections import deque # BFS 함수 정의 def bfs(sx, sy, ex, ey): # 시작 지점이 목표 지점과 같은 경우, 함수 종료 if sx == ex and sy == ey: return queue = deque([(sx, sy)]) # 나이트가 움직일 수 있는 방향 벡터 정의 dx = [-2, -1, 1, 2, 2, 1, -1, -2] dy = [1, 2, 2, 1, -1, -2, -2, -1] while queue: x, y = queue.popleft() for d in range(8): nx = x + dx[d] ny = y + dy[d] # 범위를 벗어나는 경우, 무시 if nx = i or ny < 0 or ny ..
-
[이코테 최단경로] 미래 도시Coding Test/이것이 코딩 테스트다 2021. 1. 10. 05:34
# 문제 미래 도시에는 1번부터 N번까지의 회사가 있는데 특정 회사끼리는 서로 도로를 통해 연결되어 있다. 방문 판매원 A는 현재 1번 회사에 위치해 있으며, X번 회사에 방문해 물건을 판매하고자 한다미래 도시의 특정 회사에 도착하기 위한 방법은 회사끼리 연결되어 있는 도로를 이용하는 방법이 유일하다. 또한 연결된 2개의 회사는 양방향으로 이동할 수 있다. 공중 미래 도시에서 특정 회사와 다른 회사가 도로로 연결되어 있다면, 정확히 1만큼의 시간으로 이동할 수 있다. 또한 오늘 방문 판매원 A는 기대하던 소개팅에도 참석하고자 한다. 소개팅의 상대는 K번 회사에 존재한다. 방문 판매원 A씨는 X번 회사에 가서 물건을 판매하기 전에 먼저 소개팅 상대의 회사에 찾아가서 함께 커피를 마실 예정이다. 따라서 방문..
-
[이코테 다이나믹 프로그래밍] 못생긴 수Coding Test/이것이 코딩 테스트다 2021. 1. 10. 05:26
# 문제 못생긴 수란 오직 2, 3, 5만을 소인수(Prime Factor)로 가지는 수를 의미합니다. 다시 말해 오직 2, 3, 5를 약수로 가지는 합성수를 의미합니다. 1은 못생긴 수라고 가정합니다. 따라서 못생긴 수들은 {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...} 순으로 이어지게 됩니다. 이때, n번째 못생긴 수를 찾는 프로그램을 작성하세요. 예를 들어 11번째 못생긴 수는 15입니다. # 입력 첫째 줄에 n이 입력됩니다. (1 ≤ n ≤ 1,000) # 출력 n번째 못생긴 수를 출력합니다. # 입력 예시 # 입력 예시 1 10 # 입력 예시 2 4 # 출력 예시 # 출력 예시 1 12 # 출력 예시 2 4 내 풀이 n = int(input()) dp = [0] * (..