본문 바로가기

boj

백준 10819 차이를 최대로

https://www.acmicpc.net/problem/10819

 

10819번: 차이를 최대로

첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.

www.acmicpc.net

 

오우야

 

그냥 노가다문제이다.

 

먼져,  배열에 들어있는 수로 만들수 있는, 길이가 n인 모든 배열을 구한다.

 

그모든 배열에 대해서  |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|를 구한다.

최댓값을 찾는다.

 

근데 거의 처음구현해봐서 좀 빡셌다.

근데 노가다라서 어렵지는 않았다.

 

def dfs(arr):
    if len(answer_list)==n:
        count(answer_list)
        return

    for i in range(n):
        if not visited[i]:
            answer_list.append(arr[i])
            visited[i]=True
            dfs(arr)
            answer_list.pop()
            visited[i]=False
        

def count(arr):
    global answer
    tmp=0
    for i in range(n-1):
        tmp += abs(arr[i]-arr[i+1])
    if tmp>answer:
        answer=tmp
    return
        
        
###########################################################

n=int(input())
arr=[*map(int,input().split())]

##함수용
answer_list=[]
visited=[False for _ in range(n)]
answer=0
###
dfs(arr)
print(answer)

'boj' 카테고리의 다른 글

백준 7576 토마토  (0) 2022.04.09
백준 1003 피보나치 함수  (0) 2022.04.08
백준 10972 다음 순열  (0) 2022.04.08
백준 2812 크게 만들기  (0) 2022.04.06
백준 15666 N과 M (12)  (0) 2022.04.06