백준 10819 차이를 최대로

청천·2022년 8월 27일
0

백준

목록 보기
12/41

순열 구현하여 문제를 풀었다.
https://www.acmicpc.net/problem/10819

import sys; input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))
lst = [0] * n
ans = 0

visited = [False] * n
def recur2(cur):
    global ans
    										# 이 위치에 1을 썼다 낭패를 보았다. 
    if cur == n:          					# 문제 조건 상n 개가 다 나열되고 써야한다.
        tmp = 0								# 1
        for i in range(n - 1):				# 1
            tmp += abs(lst[i] - lst[i + 1])	# 1
        ans = max(ans, tmp)					# 1
        return			
    for i in range(n):
        if visited[i]:
            continue
        lst[cur] = arr[i]
        visited[i] = True
        recur2(cur+1)
        visited[i] = False
recur2(0)
print(ans)

모듈도 이용해 봤다.

import sys; input = sys.stdin.readline
from itertools import permutations

n = int(input())
arr = list(map(int, input().split()))
lst = list(permutations(arr))

ans = 0
for i in range(len(lst)):
    tmp = 0
    for j in range(n-1):
        tmp += abs(lst[i][j] - lst[i][j+1])
    ans = max(ans, tmp)
print(ans)

0개의 댓글