본문 바로가기
Algorithm/etc

[파이썬] 백준 10819 : 차이를 최대로 (실버)

by 베짱이28호 2023. 5. 26.

[파이썬] 백준 10819 : 차이를 최대로 (실버)

 

 

10819번: 차이를 최대로

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

www.acmicpc.net


문제


풀이

0. 방향성 생각

주어진 n의 범위가 매우 작다는 점 (팩토리얼 하면 크긴 하지만)

이 부분을 이용해서 모든 순열 찾고 진행.

주어진 수의 최소값이 -100이므로 절대값 합의 최소값을 100*n으로 잡고 갱신

1. 풀이

from itertools import permutations

n = int(input())
arr = list(map(int,input().split()))

answer = -100*n
temp = list(permutations(arr,n))
for i in range(len(temp)):
    temp_sum  = 0
    for j in range(n-1):
        temp_sum += abs(temp[i][j]-temp[i][j+1])
        if answer < temp_sum:
            answer = temp_sum
print(answer)

itertools를 사용해서 모든 순열 찾고 진행


전체 코드

from itertools import permutations

n = int(input())
arr = list(map(int,input().split()))

answer = -100*n
temp = list(permutations(arr,n))
for i in range(len(temp)):
    temp_sum  = 0
    for j in range(n-1):
        temp_sum += abs(temp[i][j]-temp[i][j+1])
        if answer < temp_sum:
            answer = temp_sum
print(answer)

모듈써서 그런가 난이도 치고 매우매우매우 쉽게 풀었다

댓글