[백준] 10819번 : 차이를 최대로

2021. 4. 9. 16:49백준

 

접근법

 

- 처음에는 로직을 직접 짰음

(가장 최솟값을 중앙에 넣고 최댓값으로 한 번 감싸고, 그 겉을 다시 최솟값으로 감싸고 반복)

(친구와 같이 풀다가 친구가 반례 [7, 1, 1, 4, 4, 12, 19]를 발견함)

 

- 문제를 풀다가 중간에 배열의 사이즈가 8 이하라는 것을 보고 로직 수정'

(순열로 전체를 나열해도 배열의 원래 크기가 8 이하기 때문에 시간이나 메모리에 큰 지장이 없다 생각)

 

- permutations 라이브러리를 사용하여 순열로 list를 만든 후 max로 배열안의 최댓값을 출력함

 

 

 

 

풀이

from itertools import permutations

N_size = int(input())
N = list(map(int, input().split()))

def absSum(N) :
    count = 0
    for i in range(len(N) - 1) :
        count += abs(N[i] - N[i - 1])
    return count

l = [absSum(x) for x in list(permutations(N, len(N)))]

print(max(l))

 

 

결과

'백준' 카테고리의 다른 글

[백준] 9461번 : 파도반 수열  (0) 2021.04.21
[백준] 2579번 : 계단 오르기  (0) 2021.04.20
[백준] 1904번 : 01타일  (1) 2021.04.20
[백준] 1003번 : 피보나치 함수  (0) 2021.04.19
[백준] 10829번 : 스택  (0) 2021.03.24