카테고리 없음
백준 파이썬 10819 차이를 최대로
우히힝
2021. 10. 8. 10:09
백준 링크:https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
모든 경우의 수를 계산하는 브루트포스 + 백트래킹으로 하나씩 탐색하는 방법으로 문제를 풀었다.
# 에러코드!!!
n=int(input())
s=list(map(int,input().split()))
arr=[]
result=0
def dfs():
global result
if len(arr) == n:
sum_arr = 0
for i in range(n-1):
sum_arr += abs(arr[i]-arr[i+1])
result = max(result,sum_arr)
return
for i in s:
if i not in arr:
arr.append(i)
dfs()
arr.pop()
dfs()
print(result)
다만 이렇게 할 경우 수열 s에 중복값이 있으면 에러가 나기 떄문에 range값으로 넣도록하였다.
n=int(input())
s=list(map(int,input().split()))
arr=[]
result=0
def dfs():
global result
if len(arr) == n:
sum_arr = 0
for i in range(n-1):
sum_arr += abs(s[arr[i]]-s[arr[i+1]])
result = max(result,sum_arr)
for i in range(len(s)):
if i not in arr:
arr.append(i)
dfs()
arr.pop()
dfs()
print(result)