본문 바로가기

백준 코딩 테스트

백준 10819번 - 차이를 최대로

728x90

출처 : 10819번: 차이를 최대로 (acmicpc.net)

 

10819번: 차이를 최대로

첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.

www.acmicpc.net

차이를 최대로 성공분류

시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율

1 초 256 MB 14800 9289 7153 63.402%

문제

N개의 정수로 이루어진 배열 A가 주어진다. 이때, 배열에 들어있는 정수의 순서를 적절히 바꿔서 다음 식의 최댓값을 구하는 프로그램을 작성하시오.

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

입력

첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.

출력

첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다.


[ 문제 설명 ]

 

그림으로 설명하겠다.

 

그림 1 - 차이를 최대로 아이디어 설명


[ 코드 ]

 

import itertools

n = int(input())

nums = list(map(int, input().split(" ")))

res = 0
numbers = itertools.permutations(nums, n)
# print(list(numbers))

for num in numbers:
    listn = list(num)
    # print(num)
    sum = 0
    for i in range(n - 1):
        sum += abs(listn[i] - listn[i + 1])
    res = max(sum, res)

print(res)

후기

 

itertools을 이용하면 쉽게 구현할 수 있지만. 사용하지 않고

구현하려면 자칫 어려울 수 있습니다.

728x90