파이썬 5

[백준] 1916번 최소비용 구하기 (Python)

1916번: 최소비용 구하기 (acmicpc.net) 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 다익스트라 문제 특정 출발점으로부터 특정 도착점까지의 최소비용을 묻고 있기 때문에, 하나의 출발점에 대한 비용행렬을 만들면 된다!! (1차원 행렬) 📢 주의해야 하는 점 방향 그래프이다!! (처음에 무방향 그래프라고 생각했다가 틀렸다...😥) 한 노드로부터 다른 노드로 가는 간선이 여러 개일 수 있다!! 예를 들어, 입력이 다음과 같이 주어지면, 1 2 3 1 2 10 비용이..

Algorithm/Graph 2021.03.02

[프로그래머스] 순위 (Python)

코딩테스트 연습 - 순위 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 처음에는 딕셔너리와 세트로 풀이했는데 시간 초과가 났다. (시초 안 나는 풀이도 있다!!) 기왕 문제 종류가 그래프인만큼 다른 풀이 방법을 떠올려 보려고 했지만 쉽지 않았다... 그런데 질문을 보니 어떤 천사분께서 플로이드-와샬을 써보라고 하신 것을 보고... 바로 풀렸다!! 플로이드-와샬 알고리즘은 원래 모든 노드로부터 다른 노드까지의 최단 거리를 저장하는 알고리즘이다. 이때, 전체 알고리즘은 삼중 반복문으로 수행되는데 다음과 같다. # n = 노드 개수 for k in range(n):# ..

Algorithm/Graph 2021.02.26

[프로그래머스] 합승 택시 요금 (Python)

코딩테스트 연습 - 합승 택시 요금 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 그래프 문제 다익스트라와 플로이드-와샬 두 방법으로 풀 수 있다. 대부분 테스트 케이스에서 다익스..

Algorithm/Graph 2021.02.25

[백준] 20208번: 진우의 민트초코우유 (Python)

20208번: 진우의 민트초코우유 (acmicpc.net) 20208번: 진우의 민트초코우유 첫번째 줄에 민초마을의 크기인 N과 진우의 초기체력 M, 그리고 민트초코우유를 마실때 마다 증가하는 체력의 양 H가 공백을 두고 주어진다. N, M, H는 모두 10보다 작거나 같은 자연수이다. 두번째 www.acmicpc.net 백트래킹, 브루트포스 주어지는 보드 위에 장애물이 없기 때문에, 우유가 있는 위치까지의 맨하탄 거리를 계산하면 된다. 네 방향으로 탐색하는 알고리즘은 시간초과가 발생하게 된다. 아래와 같은 과정으로 풀이했다. 보드 상의 우유 위치를 리스트에 저장한다. 우유 리스트를 순회하며 다음 조건을 검사한다. 현재까지 마시지 않은 우유인가 현재 체력으로 도달할 수 있는 위치인가 두 조건을 만족하면 ..

[프로그래머스] 셔틀버스 (Python)

코딩테스트 연습 - [1차] 셔틀버스 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 시뮬레이션 문제이다. 카카오에서는 이런 다중 조건을 만족시켜야 하는 문제가 꼭 출제되는 것 같다. 어떻게든 간단하게 풀어보려고 노력했으나... 아직 더 좋은 아이디어가 없으므로... timetable에 저장된 승객들의 도착 시간과 버스 도착 시간을 각각 deque에 넣었다. 두 개의 큐가 모두 빌 때까지 schecule이라는..