Dev/Algorithm 28

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

54. Spiral Matrix (Medium)

54. Spiral Matrix흔한 달팽이 문제다며칠 전에 본 기업 코테에서도 변형 달팽이 문제가 나왔는데 잘 알아두면 좋을 것 같다1. 방문 배열을 이용하는 방법,2. 세로길이 가로길이 세가면서 방향 턴 하는 방법정도가 있을 것 같은데 하나하나 조건 걸기 귀찮아서 1번으로 풀이했다.방향 바꾸는 조건 작성에서 실수하지 않는 게 중요하다. 특히 dxdy는 오타 한번 내면 찾을 수가 없다...class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: def change_dir(x): return (x+1)%4 dx,dy=[1,0,-1,0],[0,1,0,-1] ..

Dev/Algorithm 2024.11.01

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

207. Course Schedule (Medium), 210. Course Schedule II

위상정렬이 med로 나오다니 무서운 곳이다옛날에 열심히 연습했던 것 같은데 오랜만에 보고 1트로 풀어서 뿌듯deg 가 0인 것부터 진입할 수 있다from collections import dequeclass Solution: def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: # 위상정렬 r = {i: 0 for i in range(numCourses)} link = {i:[] for i in range(numCourses)} fin =[] q = deque() for pre, cur in prerequisites: r..

Dev/Algorithm 2024.10.30