문제
내가 작성한 코드(틀림)
> 도저히 모르겠다...
> 이거 그래프이론에서 본거 같은데 ㅜㅜ
참고 코드
import sys
N = int(input()) #도시의 개수
travel_cost = [list(map(int, input().split())) for _ in range(N)]
min_value = sys.maxsize #출력할 최소값 정의
def dfs_backtracking(start, next, value, visited): #시작도시번호,다음도시번호,비용,방문 도시
global min_value
if len(visited) == N: #만약 방문한 도시가 입력받은 도시의 개수라면
if travel_cost[next][start] != 0: #마지막 도시에서 출발 도시로 가는 비용이 0이 아니라면(즉,갈수 있다면)
min_value = min(min_value, value + travel_cost[next][start]) #더한 값을 저장되어있는 최소값과 비교해서 대입
return min_value
for i in range(N): #도시의 개수 만큼 반복문을 돈다.
#만약 현재 도시에서 갈 수 있는 도시의 비용이 0이 아니고 이미 방문한 도시가 아니며 그 비용값이 저장되어있는 최소값보다 작다면
if travel_cost[next][i] != 0 and i not in visited and value < min_value:
visited.append(i) #그 도시를 방문목록에 추가
dfs_backtracking(start, i, value + travel_cost[next][i], visited) #그 도시를 방문한다.
visited.pop() #방문을 완료했다면 방문목록 해제
#도시마다(0~3) 출발점을 지정
for i in range(N):
dfs_backtracking(i, i, 0, [i])
print(min_value)
> 참고한 블로그
https://ji-gwang.tistory.com/266
백준 10971번 파이썬 문제풀이(브루트 포스 - 외판원 순회 2)
코드 import sys N = int(input()) #도시의 개수 travel_cost = [list(map(int, input().split())) for _ in range(N)] min_value = sys.maxsize #출력할 최소값 정의 def dfs_backtracking(start, next, value,..
ji-gwang.tistory.com
> DFS를 이용하셔서 풀었다. 다시 DFS를 공부하자!!!
'Coding > 백준' 카테고리의 다른 글
[1012번] 유기농 배추 with Python (★) (0) | 2022.07.25 |
---|---|
[1072번] 게임 (★) (0) | 2022.07.25 |
[7568번] 덩치 with Python (0) | 2022.07.22 |
[10757번] 기본 수학1 - 큰 수 A + B with Python (0) | 2022.07.21 |
[2839번] 기본수학1 - 설탕 배달 with Python (★) (0) | 2022.07.21 |