알고리즘 8

121. Best Time to Buy and Sell Stock (Easy)

import sysclass Solution: def maxProfit(self, prices: List[int]) -> int: minVal = sys.maxsize res=0 for i in prices: if i 엊그제인가 코테를 봤는데 1번 문제가 이거랑 똑같은 게 나왔다아주 쉬운 문제인데 1시간에 3문제라 촉박해서 그런지... O(n^2)으로 풀어버렸다실수하지 않게 다시 풀어본다...다행히도 1번을 O(n^2)으로 풀어내고 2, 3번엔 집중했는지,,, 코테는 붙어서 면접을 보게 됐다

Dev/Algorithm 2024.11.08

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

이분 그래프

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

가장 가까운 공통 조상

https://www.acmicpc.net/problem/3584조금 쉬운 문제다두 노드에서 공통된 가장 가까운 부모를 찾는 문제setrecursionlimit을 안 걸어줬다가 recursionerror로 몇번 반려당했다import syssys.setrecursionlimit(100000)input = sys.stdin.readlinetk = int(input())def find_parent(x, res, depth): res.append((x, depth)) if len(tree[x]) == 0: return for i in tree[x]: find_parent(i, res, depth + 1)for _ in range(tk): n = int(input()..

Dev/Algorithm 2024.10.15