프로그래머스 배달 파이썬 | [Cos Pro 1급] 1회 1번 – 피자 배달 클래스 1156 투표 이 답변

당신은 주제를 찾고 있습니까 “프로그래머스 배달 파이썬 – [COS PRO 1급] 1회 1번 – 피자 배달 클래스“? 다음 카테고리의 웹사이트 ppa.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.charoenmotorcycles.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 EduAtoZ – Programming 이(가) 작성한 기사에는 조회수 6,106회 및 좋아요 33개 개의 좋아요가 있습니다.

프로그래머스 배달 파이썬 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [COS PRO 1급] 1회 1번 – 피자 배달 클래스 – 프로그래머스 배달 파이썬 주제에 대한 세부정보를 참조하세요

Cos Pro 1급 1회 1번 풀이 영상
가능한, 먼저 풀이해 보시고 답을 맞추어 보는 형식으로 학습하시기를 권해 드립니다.
특히 해답은 풀이하시기 전에는 안보시는 것이 좋습니다. ^^!!
사용 파일 : https://colab.research.google.com/drive/1F1vJgbS75wG4RqWWSSnZapoMk9PWILsc
해답 파일 : https://colab.research.google.com/drive/13BoOFIJulWAOsFZs19THDbWjSko1edS8

프로그래머스 배달 파이썬 주제에 대한 자세한 내용은 여기를 참조하세요.

[프로그래머스] 배달 / python 파이썬 – jenlog

Summer/Winter Coding(~2018) 문제 https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 – 배달 5 [[1,2,1],[2,3,3],[5,2,2] …

+ 여기에 자세히 보기

Source: jennnn.tistory.com

Date Published: 3/30/2021

View: 2595

[Dijkstra] 프로그래머스 L2 ‘배달’ (Python) – 두두의 頭

[Dijkstra] 프로그래머스 L2 ‘배달’ (Python) · 1번 노드에서 가장 멀리 떨어진 노드의 개수를 구해야 하므로 다익스트라 알고리즘을 이용 · 간선은 양방향 …

+ 더 읽기

Source: jyj98020.tistory.com

Date Published: 7/30/2022

View: 1307

[프로그래머스] 배달 / 파이썬 / Python / Dijkstra – 로그 남기기

solutions ). 다익스트라 알고리즘을 사용하여 최단 거리를 구하는 로직. 처음 시작하는 노드 1에서의 최단 거리는 0으로 초기화.

+ 여기에 더 보기

Source: whwl.tistory.com

Date Published: 5/26/2021

View: 3670

프로그래머스 배달 문제 풀이 파이썬

그래프의 간선과 비용, N, K가 주어질 때, 배달을 갈 수 있는 마을의 개수를 구해 … 이 문제에 관하여(프로그래머스 배달 문제 풀이 파이썬), 우리는 이곳에서 더 …

+ 여기에 표시

Source: intrepidgeeks.com

Date Published: 12/4/2021

View: 8312

(Python/파이썬) – 프로그래머스 : 배달

https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 – 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 …

+ 여기에 자세히 보기

Source: recordofwonseok.tistory.com

Date Published: 11/25/2021

View: 5704

[프로그래머스] Lv2 – 배달 (파이썬) – DoIT

import heapq import sys def solution(N, road, K): answer = 0 arr = [[]for _ in range(N+1)] for a, b, time in road: arr[a].append((time, …

+ 여기에 보기

Source: 2hs-rti.tistory.com

Date Published: 9/16/2021

View: 9222

프로그래머스 배달 코드 및 해설 (파이썬) – codlingual

프로그래머스 배달 코드 및 해설 (파이썬) … 코딩테스트 연습 – 배달 … i[0])) dijkstra(start=1) # K 이하의 시간에 배달이 가능한 마을의 개수 …

+ 여기에 자세히 보기

Source: codlingual.tistory.com

Date Published: 2/17/2022

View: 125

[프로그래머스 lv2] 배달 (파이썬, 최단 거리 탐색, 다익스트라)

[프로그래머스 lv2] 배달 (파이썬, 최단 거리 탐색, 다익스트라) … 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다.

+ 여기를 클릭

Source: latte-is-horse.tistory.com

Date Published: 5/11/2021

View: 1227

주제와 관련된 이미지 프로그래머스 배달 파이썬

주제와 관련된 더 많은 사진을 참조하십시오 [COS PRO 1급] 1회 1번 – 피자 배달 클래스. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

See also  정시 수시 차이 | 정시 Vs 수시 뭐가 더 공정할까? | 입시덕후 상위 50개 답변
[COS PRO 1급]  1회 1번 - 피자 배달 클래스
[COS PRO 1급] 1회 1번 – 피자 배달 클래스

주제에 대한 기사 평가 프로그래머스 배달 파이썬

  • Author: EduAtoZ – Programming
  • Views: 조회수 6,106회
  • Likes: 좋아요 33개
  • Date Published: 2021. 1. 7.
  • Video Url link: https://www.youtube.com/watch?v=bflbX5IJYdo

[프로그래머스] 배달

728×90

🌝 Summer/Winter Coding(~2018)

문제

https://programmers.co.kr/learn/courses/30/lessons/12978

thinking

최단거리이기 때문에 다익스트라를 사용했다

나동빈님의 블로그를 보면 이해가 아주 쉽다. 굿 !!!!!!

https://blog.naver.com/PostView.naver?blogId=ndb796&logNo=221234424646&redirect=Dlog&widgetTypeCall=true&directAccess=false

코드

import heapq def dijkstra(dist,adj): # 출발노드를 기준으로 각 노드들의 최소비용 탐색 heap = [] heapq.heappush(heap, [0,1]) # 거리,노드 while heap: cost, node = heapq.heappop(heap) for c,n in adj[node]: if cost+c < dist[n]: dist[n] = cost+c heapq.heappush(heap, [cost+c,n]) def solution(N, road, K): dist = [float('inf')]*(N+1) # dist 배열 만들고 최소거리 갱신할거임 dist[1] = 0 # 1번은 자기자신이니까 거리 0 adj = [[] for _ in range(N+1)] # 인접노드&거리 기록할 배열 for r in road: adj[r[0]].append([r[2],r[1]]) adj[r[1]].append([r[2],r[0]]) dijkstra(dist,adj) return len([i for i in dist if i <=K])

[프로그래머스] 배달 / 파이썬 / Python / Dijkstra

728×90

반응형

💡solutions )

💬 다익스트라 알고리즘을 사용하여 최단 거리를 구하는 로직

💬 처음 시작하는 노드 1에서의 최단 거리는 0으로 초기화

💬 인접행렬 만들고 -> heappush를 통해 최단 거리 순으로 정렬 -> 최단 거리가 될 때마다 거리를 저장해 놓는 리스트인 dis 업데이트

👨‍💻code )

import heapq def dijkstra(dis, adj): heap = [] heapq.heappush(heap, [0, 1]) while heap: cost, node = heapq.heappop(heap) for c, n in adj[node]: if cost + c < dis[n]: dis[n] = cost + c heapq.heappush(heap, [cost + c, n]) def solution(N, road, K): INF = float('inf') dis = [INF] * (N + 1) dis[1] = 0 # 마을 1 초기화 adj = [[] for _ in range(N + 1)] for r in road: adj[r[0]].append([r[2], r[1]]) adj[r[1]].append([r[2], r[0]]) dijkstra(dis, adj) return len([x for x in dis if x <= K]) 📌description ) >문제 설명

N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 다음은 N = 5, K = 3인 경우의 예시입니다.

위 그림에서 1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지는 3 이하의 시간에 배달할 수 있습니다. 그러나 3번 마을까지는 3시간 이내로 배달할 수 있는 경로가 없으므로 3번 마을에서는 주문을 받지 않습니다. 따라서 1번 마을에 있는 음식점이 배달 주문을 받을 수 있는 마을은 4개가 됩니다.

마을의 개수 N, 각 마을을 연결하는 도로의 정보 road, 음식 배달이 가능한 시간 K가 매개변수로 주어질 때, 음식 주문을 받을 수 있는 마을의 개수를 return 하도록 solution 함수를 완성해주세요.

>제한사항

마을의 개수 N은 1 이상 50 이하의 자연수입니다.

road의 길이(도로 정보의 개수)는 1 이상 2,000 이하입니다.

road의 각 원소는 마을을 연결하고 있는 각 도로의 정보를 나타냅니다.

road는 길이가 3인 배열이며, 순서대로 (a, b, c)를 나타냅니다. a, b(1 ≤ a, b ≤ N, a != b)는 도로가 연결하는 두 마을의 번호이며, c(1 ≤ c ≤ 10,000, c는 자연수)는 도로를 지나는데 걸리는 시간입니다. 두 마을 a, b를 연결하는 도로는 여러 개가 있을 수 있습니다. 한 도로의 정보가 여러 번 중복해서 주어지지 않습니다.

K는 음식 배달이 가능한 시간을 나타내며, 1 이상 500,000 이하입니다.

임의의 두 마을간에 항상 이동 가능한 경로가 존재합니다.

1번 마을에 있는 음식점이 K 이하의 시간에 배달이 가능한 마을의 개수를 return 하면 됩니다.

반응형

프로그래머스 배달 문제 풀이 파이썬

Author And Source

이 문제에 관하여(프로그래머스 배달 문제 풀이 파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rltjr1092/프로그래머스-배달-문제-풀이

저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.

(Python/파이썬)

728×90

728×90

https://programmers.co.kr/learn/courses/30/lessons/12978

문제 :

N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 다음은 N = 5, K = 3인 경우의 예시입니다.

위 그림에서 1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지는 3 이하의 시간에 배달할 수 있습니다. 그러나 3번 마을까지는 3시간 이내로 배달할 수 있는 경로가 없으므로 3번 마을에서는 주문을 받지 않습니다. 따라서 1번 마을에 있는 음식점이 배달 주문을 받을 수 있는 마을은 4개가 됩니다.

마을의 개수 N, 각 마을을 연결하는 도로의 정보 road, 음식 배달이 가능한 시간 K가 매개변수로 주어질 때, 음식 주문을 받을 수 있는 마을의 개수를 return 하도록 solution 함수를 완성해주세요.

풀이 :

최단경로를 찾는 알고리즘 중 1번 마을에서 나머지 마을로 가는 최단경로를 찾는 문제이고, 가중치가 있는 그래프이므로 다익스트라 알고리즘으로 해결했습니다.

1번 마을에서 다른 마을로 가는 가중치와 도착지를 minheap에 넣고 가중치가 낮은 마을부터 탐색을 실시했습니다.

현재 마을까지의 가중치가 heap에 넣을 시점의 가중치(cost)보다 작을 경우 탐색을 실시하지 않고(15~16라인)

아닌 경우에만 totalCost를 계산해주어 다음 마을로 가는 방법이 최단경로인지 여부를 확인해주었습니다.

처음에 1번마을 제자리로 배달하는 경우를 고려 안해서 한 번 틀렸는데 1번마을에서 1번마을로 가는 경우는 가중치가 0 입니다. (안 움직여도 되므로)

소스코드 :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import heapq as hq def solution(N, road, K): answer = 0 graph = [[] for _ in range (N + 1 )] distance = [float( “inf” ) for _ in range (N + 1 )] distance[ 1 ] = 0 for start,end,cost in road: graph[start].append([end,cost]) graph[end].append([start,cost]) heap = [] hq.heappush(heap,( 0 , 1 )) while heap: cost,curr = hq.heappop(heap) if distance[curr] < cost: continue for nxt,c in graph[curr]: totalCost = cost + c if totalCost < distance[nxt]: distance[nxt] = totalCost hq.heappush(heap,(totalCost,nxt)) for i in distance[ 1 :]: if i < = K: answer + = 1 print (distance) return answer Colored by Color Scripter cs 728x90 320x100

프로그래머스 배달 코드 및 해설 (파이썬)

반응형

https://programmers.co.kr/learn/courses/30/lessons/12978

2가지 수정사항을 제외하고 다익스트라 알고리즘을 그대로 활용해 풀이했습니다.

(1) 하나의 도로에서 양방향으로 이동 가능하므로, graph를 만들 때 양방향 정보를 모두 저장했습니다

(2) 마지막에 답을 구할 때 주어진 K 이하의 시간이 걸리는 마을의 개수를 세서 반환했습니다.

import heapq def solution(N, road, K): INF = int(1e9) graph = [[] for _ in range(N+1)] distance = [INF] * (N+1) # 간선 정보 저장하기 for r in road: a, b, c = r # 양방향 graph[a].append((b,c)) graph[b].append((a,c)) # 다익스트라 알고리즘 def dijkstra(start): q = [] distance[start] = 0 heapq.heappush(q, (0, start)) while q: # 최단거리 노드 dist, now = heapq.heappop(q) # 이미 방문했거나 최솟값이 아닌 경우 if distance[now] < dist: continue # 연결된 노드들에 대해 for i in graph[now]: cost = dist + i[1] # 현재 정보보다 더 적은 시간이 필요한 경우 갱신 if cost < distance[i[0]]: distance[i[0]] = cost heapq.heappush(q, (cost, i[0])) dijkstra(start=1) # K 이하의 시간에 배달이 가능한 마을의 개수 return len([d for d in distance if d <= K]) 반응형

[프로그래머스 lv2] 배달 (파이썬, 최단 거리 탐색, 다익스트라)

반응형

문제 설명

N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 다음은 N = 5, K = 3인 경우의 예시입니다. 위 그림에서 1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지는 3 이하의 시간에 배달할 수 있습니다. 그러나 3번 마을까지는 3시간 이내로 배달할 수 있는 경로가 없으므로 3번 마을에서는 주문을 받지 않습니다. 따라서 1번 마을에 있는 음식점이 배달 주문을 받을 수 있는 마을은 4개가 됩니다.

마을의 개수 N, 각 마을을 연결하는 도로의 정보 road, 음식 배달이 가능한 시간 K가 매개변수로 주어질 때, 음식 주문을 받을 수 있는 마을의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항

마을의 개수 N은 1 이상 50 이하의 자연수입니다.

road의 길이(도로 정보의 개수)는 1 이상 2,000 이하입니다.

road의 각 원소는 마을을 연결하고 있는 각 도로의 정보를 나타냅니다.

road는 길이가 3인 배열이며, 순서대로 (a, b, c)를 나타냅니다. a, b(1 ≤ a, b ≤ N, a != b)는 도로가 연결하는 두 마을의 번호이며, c(1 ≤ c ≤ 10,000, c는 자연수)는 도로를 지나는데 걸리는 시간입니다. 두 마을 a, b를 연결하는 도로는 여러 개가 있을 수 있습니다. 한 도로의 정보가 여러 번 중복해서 주어지지 않습니다.

K는 음식 배달이 가능한 시간을 나타내며, 1 이상 500,000 이하입니다.

임의의 두 마을간에 항상 이동 가능한 경로가 존재합니다.

1번 마을에 있는 음식점이 K 이하의 시간에 배달이 가능한 마을의 개수를 return 하면 됩니다.

입출력 예

N road K result 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 입출력 예 설명 입출력 예 설명 입출력 예 #1

문제의 예시와 같습니다. 입출력 예 #2

주어진 마을과 도로의 모양은 아래 그림과 같습니다.

1번 마을에서 배달에 4시간 이하가 걸리는 마을은 [1, 2, 3, 5] 4개이므로 4를 return 합니다.

나의 풀이

어떤 지점에서 다른 모든 지점까지의 최소 거리를 구하는 대표적인 알고리즘으로 다익스트라(Dijkstra) 알고리즘이 있다. 나는 이 문제를 우선 순위 큐(with Heap)를 사용한 다익스트라 알고리즘을 활용해 풀었다.

다익스트라 알고리즘

import heapq INF = 10**9 # 충분히 큰 값 distance, graph = list(), list() def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) if distance[now] < dist: continue for t, d in graph[now].items(): cost = dist + d if cost < distance[t]: distance[t] = cost heapq.heappush(q, (cost, t)) 이 글에서 다익스트라 알고리즘에 대해 설명하지는 않을 것이다. 다익스트라 알고리즘에 대해 잘 모른다면 구글에 굉장히 다양한 설명이 있으니 참고하면 될 듯 하다. 힙을 사용한 우선 순위 큐로 시간 복잡도를 줄였다. 파이썬의 heapq는 최소 힙을 표현할 수 있는데 힙에 튜플이나 리스트가 들어가 있다면 첫 번째 요소를 비교한 뒤 첫 번째 요소가 같다면 그 다음 요소를 확인하는 방식으로 크기를 비교한다. 현재 방문 중인 노드와 연결 된 노드 중 거리가 가장 짧은 것을 고르기 위해 힙에 push 할 때는 (거리, 노드) 와 같이 거리가 첫 번째 요소로 오도록 push했다. 최단 거리를 찾을 때마다 전역 변수로 선언된 distance의 값을 수정한다. 메인 함수 INF = 10**9 # 충분히 큰 값 distance, graph = list(), list() def dijkstra(): # ... 위에서 설명 pass def solution(N, road, K): global distance, graph # 거리 무한대로 초기화 distance = [INF] * (1 + N) # 그래프에 a -> b , b -> a 최단 거리 추가 graph = [dict() for _ in range(N + 1)] for _from, _to, dist in road: # a -> b if _to in graph[_from].keys(): graph[_from][_to] = min(graph[_from][_to], dist) else: graph[_from][_to] = dist # b -> a if _from in graph[_to].keys(): graph[_to][_from] = min(graph[_to][_from], dist) else: graph[_to][_from] = dist # 최단 경로 찾기 dijkstra(1) return len([d for d in distance if d <= K]) 메인 함수인 solution()에서는 distance에 모든 노드까지의 거리를 무한대로 설정한다. (문제에서 노드가 1부터 시작하기 때문에 N + 1 크기로 선언해서 인덱스를 그대로 사용할 수 있도록 했다) 그리고 graph에는 각 인덱스마다 사전으로 초기화했다. 만약 3번 노트에 1, 2, 4번 노드가 연결되어 있다면 graph[3]에는 {1: ??, 2: ??, 4: ??} 가 저장되어 있을 것이다. 제한 사항에서 두 마을 a, b를 연결하는 도로는 여러 개가 있을 수 있다고 했기 때문에 그 도로 중 최소 값을 찾아서 갱신하기 위해 찾아야하는데 그냥 리스트로 저장해서 선형적으로 찾는 것보다 사전을 사용하면 O(1) 복잡도로 찾을 수 있기 때문에 사전에 정보를 저장하는 방식을 선택했다. 마을은 단방향 그래프가 아닌 양방향이므로 a -> b 로 가는 경우와 b -> a 로 가는 경우를 모두 저장해야 한다.

dijkstra(1)를 수행하면 1번 노드에서 나머지 노드까지 갈 수 있는 최단 거리가 distance 리스트에 저장된다.

마지막으로 거리가 K보다 작거나 같은 마을의 개수를 return하면 된다.

전체 코드

import heapq INF = 10**9 # 충분히 큰 값 distance, graph = list(), list() def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) if distance[now] < dist: continue for t, d in graph[now].items(): cost = dist + d if cost < distance[t]: distance[t] = cost heapq.heappush(q, (cost, t)) def solution(N, road, K): global distance, graph # 거리 무한대로 초기화 distance = [INF] * (1 + N) # 그래프에 a -> b , b -> a 최단 거리 추가 graph = [dict() for _ in range(N + 1)] for _from, _to, dist in road: # a -> b if _to in graph[_from].keys(): graph[_from][_to] = min(graph[_from][_to], dist) else: graph[_from][_to] = dist # b -> a if _from in graph[_to].keys(): graph[_to][_from] = min(graph[_to][_from], dist) else: graph[_to][_from] = dist # 최단 경로 찾기 dijkstra(1) return len([d for d in distance if d <= K]) 채점 결과 반응형

키워드에 대한 정보 프로그래머스 배달 파이썬

다음은 Bing에서 프로그래머스 배달 파이썬 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [COS PRO 1급] 1회 1번 – 피자 배달 클래스

  • python
  • 파이썬
  • eduatoz
  • cos pro
  • 1급
[COS #PRO #1급] # #1회 #1번 #- #피자 #배달 #클래스


YouTube에서 프로그래머스 배달 파이썬 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [COS PRO 1급] 1회 1번 – 피자 배달 클래스 | 프로그래머스 배달 파이썬, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment