일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 |
30 | 31 |
- Kruskal
- 소프트웨어공학
- 마라마라빔
- 코드트리
- BFS
- 백준
- DFS
- minimum spanning tree
- django
- 동적계획법
- 알고리즘
- codetree
- Planned
- 백트래킹
- 실습
- 최소스패닝트리
- 프로그래머스
- MyPlaylist
- DP
- 장고
- 함밥
- SQL
- programmers
- B대면노래방
- 데이터베이스
- 그리디알고리즘
- Bellman-Ford
- 모각코
- 파이썬
- 종합설계
- Today
- Total
목록백준 (85)
Leta Learns

문제 https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 벨만포드 코드에 문제가 있는데 모르겠어서 친구랑 스터디할 때 상의했다. for문을 세 번 돌려야 하는데 난 두 번만 돌려서 문제가 생겼다. for i in range(1, n+1) : 간선 탐색을 위한 for문 (아래 for문을 n번 반복) for a in range(1, n+1) : 노드 탐색을 위한 for문 (모든 엣지에 대해서..
ㅎ............ 벨만포드....... 모르겠어요......... 오늘 낮에 벨만포드 다른 문제 풀다가 안 풀려서 넘기고 이거 푼 건데 그 문제를 못 풀어서 그런가 이것도 못 풀겠다. 내 벨만포드 코드에 문제가 있나보다.. 뭐가 문제일까... 근데 이 문제는 테스트 케이스 여러 개 받아와야 해서 for문 안에서 모든 것을 처리해야 하는데 그걸 이해하는데 오래 걸렸다. 문제가 너무 길어서 읽기 싫게 생겼거든요.. 내일 다시 풀거나 다음 모각코 때 다시 풀어야지.... ㅠ import sys input = sys.stdin.readline def bf(start): dist[start] = 0 for i in range(1, n+1): for next, time in road[i]: if dist[i..

문제 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 어제 푼 다익스트라 코드 이용해서 조금만 손 봤더니 그냥 풀렸다.. 다익스트라 코드 외우면 이 문제 저 문제 풀기 수월하겠네. 외워야겠다. 시작점, 도착점만 입력 받아서 다익스트라 이용해서 dist 배열 구하고 변수(cost) 에 저장한 다음, 해당 배열의 도착점 인덱스 값을 출력해주면 된다. (cost[end]) import sys import heapq ..

문제 https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 다익스트라.. 아무 생각 없이 시도했다가... 피 봤다.... heapq 쓰는 방법 어려워서 고민하다가 다익스트라 예제 코드 구글링해서 참고했다. 이 문제에서 포인트는 파티를 여는 마을(x)로 갈 때 dijkstra 한 번, 파티가 끝나고 집에 갈 때 dijkstra 한 번. 총 두 번 dijkstra 함수를 호출해야 한다는 것이다. dijkstra 함수 내부에..
지난 주 초반에 풀다가 못 풀어서 포기한 문제인데 드디어 풀었다. 친구랑 같이 상의해 본 문제긴 한데 그래도 내 코드로 풀고 싶어서 계속 붙잡고 있다가.. ㅋㅋ 며칠 동안 계속 안 풀려서 그냥 친구 코드 참고했다. 내 기존 코드에서는 원산지 여부를 if문에 all() 함수를 사용해서 처리했다. 유향 그래프이므로 인접리스트에 해당 값이 요소로 들어가있지 않으면 원산지이기 때문. 근데 이 방식으로 했더니 원산지가 검거되어도 dfs는 계속 돌아가는 문제가 생겼다. 원산지가 검거되면 해당 원산지로부터 공급받는 곳을 dfs로 확인할 필요가 없다. 따라서 root 리스트를 만들어서 원산지 여부를 확인하고 원산지이고, 해당 노드를 방문하지 않은 경우에만 dfs를 돌려주었다. 이렇게 하면 두 원산지로부터 공급받는 노드..

문제 https://www.acmicpc.net/problem/1949 1949번: 우수 마을 N개의 마을로 이루어진 나라가 있다. 편의상 마을에는 1부터 N까지 번호가 붙어 있다고 하자. 이 나라는 트리(Tree) 구조로 이루어져 있다. 즉 마을과 마을 사이를 직접 잇는 N-1개의 길이 있으며, www.acmicpc.net 스터디 할 때 트리 DP 예제 코드를 받아놔서 그거 보고 좀 고치면서 풀었더니 골드1 치고는 엄청 빨리 풀었다. 사실 두 시간 만에 푼 거라 난이도 떠나서도 내 기준 엄청 빨리 푼 편에 속한다. 문제 이해부터 쉽지 않았는데, 문제에서 중요한 바는 각 노드에서 나아갈 수 있는 방향은 '우수마을' or 'not 우수마을' 이렇게 두 가지 경우. 루트 노드가 우수 마을이면 하위 노드는 우..
골드1... 함부로 건드리면 안된다... 진짜... 문제부터 잘 이해가 안 돼서 계속 읽었다. 겨우겨우 이해한 바는 각 노드에서 나아갈 수 있는 방향은 '우수마을' or 'not 우수마을' 이렇게 두 가지 경우. 루트 노드가 우수 마을이면 하위 노드는 우수 마을 일 수 없다. 루트 노드가 우수 마을이 아니면, 하위 노드는 우수 마을이거나 아니거나. (둘 중 최댓값....아마도) 이걸 dp에 저장하는 게 역시나 난관이었는데 dp[i][0] : 현재(i) 마을이 우수 마을이 아닌 경우 dp[i][1] : 현재(i) 마을이 우수 마을인 경우 로 저장했다. 제출했는데 recursion error 떠서 절망적이었다.. 근데 recursionlimit 풀어주니까 바로 됐다. 사실.. 어떻게 이렇게 빨리 풀 수 있었..

문제 https://www.acmicpc.net/problem/1922 1922번: 네트워크 연결 이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다. www.acmicpc.net 이번 주 MST 스터디에서 1197번은 프림으로, 1922번은 크루스칼로 풀 생각이었는데 보통 문제 풀 때는 거의 다 크루스칼로 푸니까 둘 다 크루스칼로 풀기로 스터디원이랑 협의했다. 그랬더니.. 1197번이랑 입력 부분 빼고 코드가 전부 똑같다. 이번 주는 크루스칼에 익숙해지는 주간.. import sys input = sys.stdin.readline def find(a): if a == parent[a]: return a parent[a] = find(parent[a]) re..

문제 https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 처음에 Prim으로 풀었는데 예제만 맞고 또 일반화에 실패했다. ㅋㅋ 찾아보니까 Prim은 우선순위큐를 쓰더라고.. 복잡하길래 그냥 Kruskal로 풀었다. 유니온 파인드 공부해놨더니 별로 안 어려워서 풀만 했다. import sys input = sys.stdin.readline def find(a): if a == parent[a]: retu..

문제 https://www.acmicpc.net/problem/18126 18126번: 너구리 구구 텔레토비 동산에 사는 너구리 구구는 입구, 거실, 주방, 안방, 공부방, 운동실, 음악실, 음식 창고 등 N개의 방을 가지고 있다. 입구를 포함한 모든 방은 1부터 N까지의 번호가 있고, 입구는 1번이 www.acmicpc.net 일반적인 dfs 문제들과 비슷하다. 거리의 최댓값을 구해서 갱신해주기만 하면 되는 문제이다. 최댓값들을 리스트에 저장한 후 그 리스트에서의 최댓값을 출력하면 된다. 최댓값 저장할 때 뻘짓을 좀 했는데 2021.07.24 - [HUFS/HUFS 모각코 캠프] - [모각코] 210724 Today I Learned 여기에 그 내용을 자세히 적어놓았다. import sys sys.se..