import sys
input=sys.stdin.readline
n=int(input())
arr=list(map(int,input().split()))
ans=-sys.maxsize
s=[]
visit=[False]*n
def dfs(s):
global ans
if len(s)==n:
hap=0
for i in range(n-1):
hap+=abs(s[i]-s[i+1])
ans=max(ans,hap)
return
for i in range(n):
if not visit[i]:
s.append(arr[i])
visit[i]=True
dfs(s)
s.pop()
visit[i]=False
dfs(s)
print(ans)
입력 배열에 중복이 있을 수 있으니 visit배열을 만들어서 체크한다.
빈 배열 s로 시작하여 방문하지 않은 배열 요소일 시 s에 추가한다.
이후 dfs 함수를 재호출하고, 호출이 끝난 뒤 s에서 pop 하고 visit는 False 처리한다.