10819

이연희·2022년 6월 10일
0

Algorithm

목록 보기
4/9
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 처리한다.

profile
공부기록

0개의 댓글