백준 10819번 차이를 최대로 파이썬

박슬빈·2021년 9월 17일
0

알고리즘

목록 보기
16/40
post-thumbnail

문제

입력 , 출력

solution

import itertools

n = int(input())
arr = list(map(int, input().split()))
arr.sort()
arr2 = list(itertools.permutations(arr, n))
res = 0
for i in range(len(arr2)):
    cur = 0
    for j in range(0, n - 1):
        cur += abs(arr2[i][j] - arr2[i][j + 1])
    if cur > res:
        res = cur
print(res)

설명

순열을 만들기 위해서itertools permutations함수를 사용했다
permutations는 순열을 구해주는 함수이다
순열 , 조합이 있는데
조합은 combinations 함수를 사용한다

순열과 조합의 차이

순열은 [1,2] , [2,1] 이 두개를 다른것으로 취급하고
조합은 같은것으로 취급을 한다.

순열을 사용한 이유

모든 경우의수를 확인하는 백트래킹 문제라서 모든 순열의 경우의수를 뽑아서 확인하는 방식으로했다

처음 생각했던 방식

|가장큰수 - 가장작은수| + |가장작은수 - 두번째로큰수|...
이런방식으로 할려고했는데 접근이 틀렸었다.
그냥 전체의 경우의수를 확인해야했던 문제였다...

후기

순열 , 조합 등 여러가지 공부를 하고 직접 구현을 해봐야하는데
라이브러리가 너무 편하다.....
참고링크
여기 링크에 들어가면 여러가지 많은 정보들이 있다.

profile
이것저것합니다

0개의 댓글