728x90
반응형
*문제 출처는 백준에 있습니다.
문제 제목: 10819번 차이를 최대로 - 순열
문제 사이트: https://www.acmicpc.net/problem/10819
나의 풀이
순열 구해서 모든 순열에 대해 검사하기
# |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|
a = int(input())
arr = list(map(int, input().split()))
# 차이가 최대가 되려면 가장 큰수 - 가장 작은수
answer = 0
visited = [False] * a
def calculation(lst):
tmp = 0
for i in range(1,len(lst)):
tmp += abs(lst[i] - lst[i-1])
return tmp
def permutation(n,new_arr):
global visited, answer
if len(new_arr) == n:
result = calculation(new_arr)
if result > answer:
answer = result
return
for i in range(len(arr)):
if visited[i] == False:
visited[i] = True
permutation(a,new_arr+[arr[i]])
visited[i] = False
permutation(a,[])
print(answer)
※ 알아야 할 것
- 흠 시간초과 날줄알았는데 의외로 괜찮은듯 dfs에서 적절히 return 한것도 도움되는거같다
728x90
반응형
'coding test - python > 백준' 카테고리의 다른 글
백준 / [복습] 2839번 설탕배달 - 탐욕 / Python 파이썬 (0) | 2025.04.04 |
---|---|
백준 / 2529번 부등호 - 순열 / Python 파이썬 (0) | 2025.04.04 |
백준 / 15649번 N 과 M / Python 파이썬 (0) | 2025.04.04 |
백준 / 1987번 알파벳 / Python 파이썬 (0) | 2025.04.03 |
백준 / 1357번 뒤집힌 덧셈 / Python 파이썬 (0) | 2025.04.03 |