BOJ 10819 차이를 최대로

LONGNEW·2021년 1월 23일
0

BOJ

목록 보기
90/333

https://www.acmicpc.net/problem/10819
시간 1초, 메모리 256MB
input :

  • N (3 ≤ N ≤ 8)
  • 정수 (-100 <= 정수 <= 100)

output :

  • 식의 최댓값을 출력

조건 :

  • |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|

배열을 나열할 수 있는 모든 방법 중에 위 조건으로 계산을 해서 가장 큰 값을 구하면 된다.
배열에 가장 많은 요소가 들어왔을 때가 8개 인데. 이를 나열 하는 방법은 8! 로 4만 밖에 되지 않는다.
그래서 permutations 메소드를 이용해서 나열 가능한 모든 경우의 수를 가지고 다 계산하자.

import sys
import itertools

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

permutation = itertools.permutations(data, n)

ret = -9999
for item in permutation:
    cnt = 0
    l_idx = 0
    r_idx = n - 1
    while l_idx < r_idx:
        cnt += abs(item[l_idx] - item[r_idx])
        l_idx += 1
        if l_idx == r_idx:
            break
        cnt += abs(item[l_idx] - item[r_idx])
        r_idx -= 1
    ret = max(ret, cnt)
print(ret)

0개의 댓글