문제링크
https://www.acmicpc.net/problem/10819
코드
방법1 permutations사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import sys
from itertools import permutations
input = sys.stdin.readline
n = int(input())
a = list(map(int,input().split()))
all = permutations(a)
ans = 0
for i in all:
s = 0
for j in range(1,n):
s+=abs(i[j]-i[j-1])
if ans<s:
ans =s
print(ans)
|
cs |
방법2 permutations 직접 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import sys
input = sys.stdin.readline
n = int(input())
a = list(map(int,input().split()))
all =[]
def bf(arr, cur):
if arr:
for i in range(n-len(cur)):
tmp = list(cur)
tmp.append(arr[i])
new_arr = arr[:i]+arr[i+1:]
bf(new_arr, tmp)
else:
all.append(cur)
a = sorted(a)
bf(a,[])
ans = 0
print(all)
for i in all:
s = 0
for j in range(1,n):
s+=abs(i[j]-i[j-1])
if ans<s:
ans =s
print(ans)
|
cs |
POINT
방법1
라이브러리를 사용하여(itertools.permutations(a)) 만들 수 있는 모든 순열을 만들고 차이 합을 구해서 비교한다.
방법2
직접 모든 순열 구하는 알고리즘을 구현하고 차이 합을 비교한다.
모든 순열 구하는 알고리즘은 아래 문제에서 구현한 것을 사용한다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 6603 로또 파이썬 python (0) | 2022.02.24 |
---|---|
[백준] 10971 외판원 순회2 파이썬 python (0) | 2022.02.23 |
[백준] 10974 모든 순열 파이썬 python (0) | 2022.02.22 |
[백준] 10973 이전 순열 파이썬 python (0) | 2022.02.20 |
[백준] 10972 다음 순열 파이썬 python (0) | 2022.02.20 |