/ ALGORITHM

(백준 with python) 10819번 차이를 최대로


https://www.acmicpc.net/problem/10819

난이도 : silver 2


이문제는 permutations를 사용하면 쉽게 풀 수 있는 문제이다.. (일단 나는 몰랐다..^^)


from itertools import permutations
import sys

n = int(input())
a = list(map(int, input().split()))

per = permutations(a)
answer = 0

for i in per:
    s = 0
    for j in range(len(i) - 1):
        s += abs(i[j] - i[j + 1])
    if s > answer:
        answer = s

print(answer)


permutations 순열 사용하기

순열은 순서를 고려하여 [] 리스트에서 나오는 원소를 골라 순서를 정해 나열해준다. 예를 들자면 [A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열해보면 [(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 가 나온다.
이를 이용해서 최대의 값을 계속해서 업데이트 시키는 로직으로 작성하면 된다.


per에는 입력한 값들이 순열로 저장되어지고 for문을 통해 각 리스트들을 반복하며 전 값과 다음 값을 뺀 후 s에 누적해서 더해준다. per안에서는 리스트가 반복되면서 더 큰수로 s가 업데이트 되는 것을 볼 수 있다

per = permutations(a)
answer = 0

for i in per:
    s = 0
    for j in range(len(i) - 1):
        s += abs(i[j] - i[j + 1])
    if s > answer:
        answer = s

(itertools 없이 구현할 수 있는 방법도 있다. 이는 나중에 알아 볼 예정이다)