Coding Test/백준
-
[백준 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..
-
[백준 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 ..
-
[백준 7569번] 토마토 - 3차원Coding Test/백준 2021. 1. 10. 01:18
# 문제 내 풀이 from collections import deque m, n, h = map(int, input().split()) # 토마토 상자를 3차원 리스트로 입력받음 box = [] for _ in range(h): box.append([list(map(int, input().split())) for _ in range(n)]) ripe = deque() # 익은 토마토를 넣을 큐 생성 # BFS 함수 정의 def bfs(): days = -1 # 위, 아래, 상, 하, 좌, 우 방향 벡터 정의 dx = [-1, 1, 0, 0, 0, 0] dy = [0, 0, -1, 1, 0, 0] dz = [0, 0, 0, 0, -1, 1] # 토마토 익히기 수행 while ripe: days += 1 f..
-
[백준 1697번] 숨바꼭질Coding Test/백준 2021. 1. 8. 17:37
# 문제 내 풀이 from collections import deque n, k = map(int, input().split()) table = [0] * 100001 # 위치를 이동할 수직선 생성 # BFS 함수 정의 def bfs(x): queue = deque([x]) # 큐 생성 # 걷기와 순간이동을 수행할 방향 벡터 생성 dx = [1, 1, 2] op = ['-', '+', '*'] while queue: p = queue.popleft() # 걷거나 순간이동하는 경우의 수 고려 for i in range(3): np = eval(str(p) + op[i] + str(dx[i])) # 범위를 벗어나면 무시 if np 100000 or np == x: continue # 아..
-
[백준 7576번] 토마토Coding Test/백준 2021. 1. 6. 09:37
# 문제 내 풀이 - 문제 풀이 실패, 수정 답안 from collections import deque def bfs(): # 동서남북 방향벡터 설정 dx = [1, 0, -1, 0] dy = [0, -1, 0, 1] days = -1 # while의 종료 조건으로 1씩 밀리기 때문에 0이 아닌 -1로 설정 while ripe: days += 1 # 현재 큐에 담긴 익은 토마토의 수만큼 for _ in range(len(ripe)): x, y = ripe.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx = n or ny = m: continue # 익은 토마토 주변에 익지 않은 토마토가 있는 경우 ..
-
[백준 1021번] 회전하는 큐Coding Test/백준 2021. 1. 5. 21:26
# 문제 내 풀이 from collections import deque # 큐를 왼쪽으로 회전시키는 함수 정의 def move_left(nums): nums.append(nums.popleft()) # 큐를 오른쪽으로 회전시키는 함수 정의 def move_right(nums): nums.appendleft(nums.pop()) n, m = map(int, input().split()) targets = list(map(int, input().split())) # 뽑아내려는 원소의 위치 nums = deque([i + 1 for i in range(n)]) # 초기의 큐 result = 0 # 순환 횟수 저장 for target in targets: idx = nums.index(target) # 찾아야 ..