🐸 문제 정보
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
🤖 알고리즘
백트래킹
⏱️ 풀이 시간
24.36m
📝 풀이
간단한 백트래킹 문제인데도, 재귀 내부 로직이 잘 안떠올라서 정답을 참고했다ㅠㅠ
임의의 수열을 만드는 재귀 함수인데, 다 풀고나니 그냥 permutation 써도 됐겠다는 생각이 들었다.
🧑💻 나의 답
# pypy3
import sys
input = sys.stdin.readline
n = int(input().rstrip())
nums = list(map(int, input().rstrip().split()))
visited = [False] * n
res = 0
def bt(arr):
global res
if len(arr) == n:
temp = 0
for i in range(n - 1):
temp += abs(arr[i] - arr[i + 1])
res = max(res, temp)
return
for i in range(n):
if not visited[i]:
visited[i] = True
arr.append(nums[i])
bt(arr)
visited[i] = False
arr.pop()
bt([])
print(res)
'PS > 문제풀이' 카테고리의 다른 글
백준 2503 숫자 야구 Python (0) | 2024.02.09 |
---|---|
백준 2812 크게 만들기 Python (0) | 2024.02.08 |
백준 1976 여행 가자 Python (0) | 2024.02.07 |
백준 16938 캠프 준비 Python (1) | 2024.02.07 |
백준 20208 진우의 민트초코우유 Python (0) | 2024.02.07 |