728x90
출처 : 10819번: 차이를 최대로 (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
'백준 코딩 테스트' 카테고리의 다른 글
백준 1696번 - 숨바꼭질 (0) | 2021.04.08 |
---|---|
백준 10971번 - 외판원 순회2 (0) | 2021.04.08 |
백준 9095번 - 1, 2, 3 더하기 (0) | 2021.04.07 |
백준 1451번 - 직사각형으로 나누기 (0) | 2021.04.07 |
백준 1107번 - 리모컨 (0) | 2021.04.06 |