[백준] 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 |