[swea] 4615 재미있는 오셀로 게임
재미있는 문제라서 들고 왔습니다. 1. 해당 방향으로 쭉 탐색하면서 해당 칸 놓는 돌로 변경. 2.1 만약 끝에 같은 돌이 없다면, 다시 원래대로. 2.2 만약 끝에 같은 돌이 있다면, 그대로 유지 dfs를 이용해서 풀었습니다. t = int(input()) directions = [[0,1],[0,-1], [1,0],[-1,0],[1,1],[-1,-1],[1,-1],[-1,1]] def dfs(board, y,x, dy, dx, c, n): if y = n or x >= n: return True if board[y][x] == 0: return True if board[y][x] == c and board[y][x] != 0: return False tmp = boa..
2023. 5. 20.
[다익스트라] 백준 9370
이번 문제는 다익스트라를 통해 풀었다. 원래 처음에는 경로를 추적할 수 있도록, 거리를 측정하는 배열에 [이전 노드, 거리] 값을 저장하도록 했었다. 문제는 다익스트라는 해당 노드까지 최단거리로 갈 수 있는 경로가 많은 경우, g와 h를 포함하지 않을 수 있기 때문에 문제가 되었다. 그래서 s -> g -> h -> 목적지, s -> h -> g -> 목적지를 구하기 위해, s ,g, h를 시작점으로 각각 다익스트라 통해 최단 거리를 구한다. import heapq import sys from collections import deque def djk(board, s, n): hq = [] dst = deque([987654321 for _ in range(n+1)]) heapq.heappush(hq, ..
2023. 1. 29.