[백준 10819] 차이를 최대로

1. 문제 설명

차이를 최대로

2. 문제 분석

DFS를 백트래킹을 사용해 푼다. DFS를 통해 전달하는 파라미터는 모든 경우의 순열.

3. 나의 풀이

import sys

n = int(sys.stdin.readline().rstrip())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))

def DFS(number_list):
    global ans

    if len(number_list) == n:
        total = 0
        for num1, num2 in zip(number_list[:-1], number_list[1:]):
            total += abs(num1 - num2)
        ans = max(ans, total)

    for i in range(n):
        if not visited[i]:
            visited[i] = True
            number_list.append(numbers[i])
            DFS(number_list)
            visited[i] = False
            number_list.pop()
            # 백트래킹

ans = 0
visited = [False for _ in range(n)]
DFS([])
print(ans)

좋은 웹페이지 즐겨찾기