백준 코딩 테스트
백준 10819번 - 차이를 최대로
코딩질문자
2021. 4. 8. 15:57
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보다 작거나 같다.
출력
첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다.
[ 문제 설명 ]
그림으로 설명하겠다.
[ 코드 ]
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