문제
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
풀이
주어진 배열에서 구할 수 있는 순열을 모두 구한 뒤, 각 순열에 식을 적용하여 최댓값을 구한다.
코드
import sys, itertools
def cal_max(candi):
result = 0
for i in range(1, len(candi)):
result += abs(candi[i-1] - candi[i])
return result
n = int(sys.stdin.readline().strip())
arr = [int(x) for x in sys.stdin.readline().split()]
candis = list(itertools.permutations(arr, n))
MAX = float('-inf')
for candi in candis:
num = cal_max(candi)
if num > MAX:
MAX = num
print(MAX)
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 1780 - 종이의 개수 [Python(파이썬)] (0) | 2021.01.23 |
---|---|
[백준] 11279 - 최대힙 [Python(파이썬)] (0) | 2021.01.23 |
[백준] 1929 - 소수구하기 [Python(파이썬)] (0) | 2021.01.23 |
[백준] 1949 - 우수 마을 [Python(파이썬)] (0) | 2021.01.20 |
[백준] 1991 - 트리순회 [Python(파이썬)] (0) | 2021.01.20 |