BFS 4

127. Word Ladder (Hard)

처음에 bfs와 딕셔너리 쓰면 되는 건 잘 알겠는데, 어떻게 한글자씩 다른 word를 탐방할지 고민스러웠다for 문을 다 돌려서 딕셔너리에 넣고 비교하는 코드를 짰는데, 당연하게도 TLE 가 났고 ...답은 fox 면 그 안에 fix, fux, xox 이런 걸 넣는 게 아니라*ox : foxf*x: foxfo*: fox이렇게 딕셔너리에 키랑 값을 저장하는 거였다메모리는 많이 들겠지만 TLE 가 나지는 않을 것 같다from collections import Counter, defaultdict, dequeclass Solution: def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int: if end..

Dev/Algorithm 2024.11.07

994. Rotting Oranges (Medium)

994. Rotting Oranges 쉬운 bfs 문제백준 토마토들을 열심히 풀었다면 10분컷할 수 있다연결된 오렌지 군집에 여러 썩은 오렌지가 있는 경우만 조심해서 큐에 미리 넣어주면 된다from collections import dequeclass Solution: def orangesRotting(self, grid: List[List[int]]) -> int: n,m = len(grid), len(grid[0]) v = [[-1]*m for _ in range(n)] dirx, diry=[0,0,-1,1],[-1,1,0,0] q = deque() for i in range(n): for j in range(m)..

Dev/Algorithm 2024.11.01

이분 그래프

https://www.acmicpc.net/problem/1707처음에 지문 읽고 이해가 안돼서 (ㅠㅠ) 구글에서 이미지 봤다자료구조 시간에 배웠던 건데 구현해보는 건 처음이다그냥 번갈아서 색 칠하고 겹치면 Out 시키면 되는 거 같다그러면 dfs bfs 중 하나 쓰면 될 듯하다 import sysfrom collections import dequeinput = sys.stdin.readlinetk = int(input())def bfs(x): q = deque() q.append(x) vis[x] = "W" while q: cx = q.popleft() for nx in g[cx]: if vis[nx] == "0": ..

Dev/Algorithm 2024.10.16

장군 (BFS)

https://www.acmicpc.net/problem/16509  일반적이지만 살짝 귀찮은 bfs 문제다저렇게 뛰는 친구들은 knight prob 비슷한 결로 아주 많이 나오고거기에 visited 할 때마다 이전 노드 방문값 ++ 해주는 방법도 아주 쉽다import sysfrom collections import dequeinput = sys.stdin.readlinen1, m1 = map(int, input().split())# 상 우 하 좌dir = [[-2, -3], [2, -3], [3, -2], [3, 2], [2, 3], [-2, 3], [-3, 2], [-3, -2]]nodir = [ [[0, -1], [-1, -1]], [[0, -1], [1, -1]], [[1, 0],..

카테고리 없음 2024.10.15