문제 링크
https://www.acmicpc.net/problem/10819
풀이
- 배열의 인덱스(n이 3이라면 0, 1, 2)를 가지고 만들 수 있는 모든 순열(= 정수의 순서를 바꾸는 역할)을 구합니다.
- 순열을 구하기 위해 itertools의 permutations 함수를 사용했습니다.
- 이중 포문을 돌면서 최댓값을 구하게 되는데, i[j] 와 i[j+1]을 통해 배열의 인덱스를 가지고 옵니다.
- arr[i[j]] 와 같은 형식으로 배열에 들어있는 정수값을 불러와 abs함수를 통해 절댓값을 계산합니다.
- 계산된 식(cal)의 결과값과 최댓값(res)을 비교해 다시 저장합니다.
코드
from itertools import permutations as pm
n = int(input())
arr = list(map(int, input().split()))
p = [*pm([i for i in range(n)])]
res = 0
for i in p:
cal = 0
for j in range(n-1):
cal += abs(arr[i[j]]-arr[i[j+1]])
res = max(cal, res)
print(res)
'Koala - 5기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[BOJ / C++] 15649번 - N과 M (1) (0) | 2022.01.17 |
---|---|
[백준/python3] - 1436 영화감독 숌 (0) | 2022.01.16 |
[백준/C++]알고리즘 1051번 숫자 정사각형 (0) | 2022.01.15 |
[BOJ / C++] 1018 : 체스판 다시 칠하기 (0) | 2022.01.15 |
[BOJ / python] 1051번: 숫자 정사각형 (0) | 2022.01.15 |