(백준 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 없이 구현할 수 있는 방법도 있다. 이는 나중에 알아 볼 예정이다)