본문 바로가기

Queue4

[자료구조] 배달 파이썬 (BFS, queue, Dijkstra, heap) from math import inf from collections import defaultdict, deque from itertools import product def solution(N, roads, K): answer = [inf, 0] + [inf for i in range(N-1)] # print(answer) # why 처음이 0이 아니라 inf로 설정했을까? -> zero 인덱스 문제를 편하게 하려고 map = defaultdict(list) # 리스트 형태로 받겠다. dist_map = [[inf for _ in range(N+1)] for _ in range(N+1)] # print(dist_map) # for road in roads: a,b,dist = road map[a].ap.. 2021. 4. 23.
[프로그래머스] 구명보트 파이썬 다른 사람의 풀이 def solution(people, limit): from collections import deque people.sort() people = deque(people) length = len(people) answer = 0 while length != 0: limit_p = limit temp = 0 pop = people.pop() length -= 1 temp += pop limit_p -= pop if length >= 1: pop_r = people[0] if limit_p >= pop_r: people.popleft() length -=1 answer+=1 return answer 최상위 조건으로는 pop 2021. 3. 12.
[프로그래머스] 주식가격 파이썬 다른 사람의 풀이 from collections import deque def solution(prices): answer = [] prices = deque(prices) while prices: c = prices.popleft() count = 0 for i in prices: if c > i: count += 1 break count += 1 answer.append(count) return answer 문제가 약간 헷갈리게 되어있다. 테스트 케이스: [1, 2, 3, 2, 3, 1] 3번째 가격인 3같은 경우 3 -> 2로 될때 1초 동안 가격이 떨어지지 않았기 때문에 += 1을 해주고 break 해줘야 한다. 처음 풀었을 때는 이것도 1초뒤에 떨어졌기 때문에 += 1을 안해주는 거라고 생각 했.. 2021. 3. 3.
[프로그래머스] 스킬트리 파이썬 def solution(skill, skill_trees): flag = 0 for trees in skill_trees: skill_check = [] for a in trees: if a in skill: skill_check.append(a) for i, v in enumerate(skill_check): if v != skill[i]: flag += 1 break return len(skill_trees) - flag solution("CBD",["BACDE", "CBADF", "AECB", "BDA"]) 가장 생각이 안났던 부분은 check 리스트의 길이가 skill 리스트 보다 짧을 경우 어떻게 처리해야되는가 였는데 그냥 check_list 만 순회하면서 값을 비교하면 되니까 문제가 없다. -.. 2021. 3. 3.