목록전체 글 (29)
경완
BFS를 할 때는무조건 !!!! 엄수할 것 (1) visited는 set으로 (2) visited는 필수(3) count도 deque에 포함할것from collections import dequedef solution(x, y, n): dq = deque([(x,0)]) count = 0 visited = set([x]) while dq: now,c = dq.popleft() if now==y: return c else: if now > y: continue for new in [(now+n,c+1), (now*2,c+1), (now*3,c..
빠르게 풀 수 있었다.역시 파이썬을 그냥 쓰는 편이 나을 것 같다. 스킬 트리가 1개만 주어지므로 스킬 트리에 있는 애라면 다음 스킬 찍을 권한을 주고, 스킬 트리에 없는 애라면 그냥 찍을 수 있으므로 넘어간다.def solution(skill, skill_trees): mainSkills = set(skill) count = 0 for s in skill_trees: pos = True idx = 0 for c in s: now = skill[idx] if not c in mainSkills: continue #그냥 찍을 수 있으면 찍는다 el..
pop보다는 idx를 써야..논리적으로 느낌이 딱! 와서 queue를 쓰면 되겠다.. 실제 택배처럼 pop을 해서 아니면 다시 집어넣고(append)해도 괜찮을거라고 생각했다. deque를 쓰면 빼고 넣는게 O(1)이라 괜찮겠지 싶었다. 근데 pop을 하니 pop from empty queue가 자꾸 떠서 모든 과정에 if else처리를 해야 했다.idx로만 바꿨어도 빨리 풀었을텐데! from collections import dequedef solution(order): truck = [] order = deque(order) start = deque([ i+1 for i in range(len(order))]) middle = deque([0]) target = order..
dp 감잡기| 1 | 2 | 3 | 5 || 5 | 6 | 7 | 8 || 4 | 3 | 2 | 1 |로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다.function solution(land) { let dp = [...land[0]]; for (let i = 1; i 4*(최대10만) 배열에서, 겹치지 않고 내려와서 싹 합치는 문제다. 1번째 행[5,6,7,8] 을 기준으로 0번째 행에서 각각 가장 큰게 내려왔을 때 best case가 나오므로, 점화식으로 풀면 된다!
고려한 방법1. ABCD~~Z 로 26번까지의 사전을 먼저 만든다.2. 현재 최대 압축길이 maxLength를 정의하고, 문제의 설명에 따라 압축 + 새로운 단어 추가 function solution(msg) { let answer = []; let dict = new Map([...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'].map((ch, i) => [ch, i + 1])); let maxLength = 1; let dictLength = 27; for(let i = 0 ; i = maxLength ) maxLength++; } break; }else{ end..