일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- minimum spanning tree
- Planned
- 함밥
- django
- 데이터베이스
- 소프트웨어공학
- 알고리즘
- 실습
- 백트래킹
- 모각코
- 프로그래머스
- 코드트리
- B대면노래방
- 백준
- DFS
- programmers
- DP
- Bellman-Ford
- 장고
- 동적계획법
- 종합설계
- codetree
- 그리디알고리즘
- BFS
- 마라마라빔
- MyPlaylist
- Kruskal
- 파이썬
- SQL
- 최소스패닝트리
- Today
- Total
목록DFS (11)
Leta Learns
문제 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 이 문제를 어렵게 풀게 된 이유는 크게 두 가지가 있다. 첫 번째는 visited 배열을 알파벳 개수에 맞춰 만들지 않고 입력받은 알파벳 리스트의 해당 인덱스를 1로 바꾸어주는 방법을 선택했다는 점이다. 그리고 같은 알파벳을 두 번 이상 지나갈 수 없으므로 check 리스트에 해당 알파벳을 append 하여 중복을 확인하는 방식이었다. ex) CAAB 이 경우, C를 지나갔다고 하면 ..
문제 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 항상 dxdy 기법에 익숙한 bfs를 dxdy 없이 그냥 큐로 구현하는 것 빼고는 어렵지 않은 문제였다. 방문할 수 있는 정점이 여러 개인 경우 정점 번호가 작은 것을 먼저 방문해야 해서 인접리스트를 sort 해주어야 했는데, 왠지 당연히 입력할 때부터 제대로 정렬해서 줄 것 같다는 근거 없는 생각에 sort를 안 해서 틀렸다. 입력받으면서 각각의 인접리..
문제 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 그래프 기본문제였다. 너무 오랜만에 풀어서 잘 기억도 안 나고, 재귀 제한 걸어줘야 한다는 것도 깜빡했다. 😅 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline def dfs(v): visited[v] = 1 for i in adjList[v]: if not v..
오늘 왜 이리 졸렸지.. 모각코 하는 동안 제정신 아니었다.. 그래도 dfs 문제니까 일단 입력받고 dfs 기본 코드만 적었다. 다음에 다시 풀래... import sys input = sys.stdin.readline def dfs(x, y): global count count += 1 visited[x][y] = 1 dxdy = [(-1, 0), (1, 0), (0, -1), (0, 1)] for dx, dy in dxdy: new_x = x + dx new_y = y + dy if -1 < new_x < len(glac) and -1 < new_y < len(glac[0]): if not visited[new_x][new_y] and glac[new_x][new_y] !=0: dfs(new_x, n..
문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 아 한 번에 푼 문제 완전 오랜만이라 신난다. bfs로 풀 수 있는 문제인데 그러면 기존에 푼 dxdy 문제랑 코드가 같아서 dfs로 풀었다. 뭐 물론.. 큰 차이는 없다. 그냥 deque를 안 쓴 것 뿐.. ㅋㅋㅋㅋ input 0110100을 받는다고 가정했을 때, 이를 개별 int로 받는 과정을 생각하는 게 어려웠다. list(map(int, input().split()))으로 했더니 그냥..
#DFS 탐색 - 그래프 탐색 https://www.codetree.ai/missions/2/concepts/4/problems/graph-traversal/description 코드트리 삼성 SW역량테스트, 코드트리와 함께 www.codetree.ai import sys input = sys.stdin.readline def dfs(v): visited[v] = 1 for i in range(len(adjList[v])): w = adjList[v][i] if not visited[w]: dfs(w) n, m = map(int, input().split()) adjList = [[] for i in range(n+1)] visited = [0 for i in range(n+1)] for i in ran..
지난 주 초반에 풀다가 못 풀어서 포기한 문제인데 드디어 풀었다. 친구랑 같이 상의해 본 문제긴 한데 그래도 내 코드로 풀고 싶어서 계속 붙잡고 있다가.. ㅋㅋ 며칠 동안 계속 안 풀려서 그냥 친구 코드 참고했다. 내 기존 코드에서는 원산지 여부를 if문에 all() 함수를 사용해서 처리했다. 유향 그래프이므로 인접리스트에 해당 값이 요소로 들어가있지 않으면 원산지이기 때문. 근데 이 방식으로 했더니 원산지가 검거되어도 dfs는 계속 돌아가는 문제가 생겼다. 원산지가 검거되면 해당 원산지로부터 공급받는 곳을 dfs로 확인할 필요가 없다. 따라서 root 리스트를 만들어서 원산지 여부를 확인하고 원산지이고, 해당 노드를 방문하지 않은 경우에만 dfs를 돌려주었다. 이렇게 하면 두 원산지로부터 공급받는 노드..
문제 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..
이거 지난 주 토요일 모각코 때 시도했던 문제인데 다른 거 하느라 계속 미뤄서 드디어 오늘 다시 시도했다. 모각코 당일인 17일에는 아예 알고리즘을 잘못 생각하고 있었고, 다음날인 18일에 다시 풀어서 모각코 글을 작성했다. 18일에 푼 코드는 예제만 맞고 제출 돌리면 틀렸었다. 2021.07.17 - [HUFS/HUFS 모각코 캠프] - [모각코] 210717 Today I Learned #기존(에 틀린) 코드 import sys def dfs(v): visited[v] = 1 for i in range(len(adjList[v])): w = adjList[v][i][0] if not visited[w]: dist[w] = max(max(dist), adjList[v][i][1] + dist[v]) d..
문제 https://www.acmicpc.net/problem/17220 17220번: 마약수사대 최근들어 세계적으로 마약과 관련한 사회적 문제들이 많이 발생하고 있다. 이에 따라 경찰은 마약 수사대의 한정된 인력이 허용하는 선에서 최대한 마약공급을 막고자 한다. 마약 공급책들은 www.acmicpc.net dfs 골드3은 무리였나.. ㅋㅋㅋ 인접리스트 입력을 문자열로 받는 것부터가 어려워서 헤맸다. 아스키 코드 써서 간신히 해결. 2021.07.20 - [Python] - 아스키코드 변환 함수 ord(), chr() 유향그래프 문제도 거의 처음 푸는 것 같다. check에 맨 마지막 줄에서 입력 받은 2 b c 를 리스트로 넣고 인덱싱 사용해서 문제를 풀었다. check는 경찰이 소재를 파악하고 있기 ..