BOJ-Algorithm
백준 10819 - 차이를 최대로
bellhundred
2022. 1. 15. 14:24
https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
import sys, itertools
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
max_diff = 0
for num_array in itertools.permutations(arr,n):
diff = 0
for i in range(len(num_array)-1):
diff+=abs(num_array[i]-num_array[i+1])
if max_diff<diff:
max_diff=diff
print(max_diff)
입력받은 숫자 리스트의 순서를 바꿔가면서, n과 n-1의 차이의 절대값의 합이 최대가 될 때 그 최댓값을 출력하는 문제다. 다시 말해, 리스트의 순열을 바꾸는 문제이기 때문에 itertools.permutations를 사용하면 순열 리스트를 구할 수 있고 이 리스트에 있는 요소들을 계산해가면서 어떤 게 최댓값인지를 찾으면 되는 문제다.
코테에서 itertools 같은 파이썬 내부 모듈을 사용할 수 있는지를 검색해 봤는데, 대개는 사용할 수 있게 해 준다고 한다. 사용할 수 없다면 대체로 미리 공지해준다고 한다.