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 |