https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
'''
10819번: 차이를 최대로 / silver 2 / 브루트포스, 순열
'''
import itertools
# N, arr 입력받기
N = int(input())
arr = list(map(int, input().split()))
# 순열 활용 case_arr 만들기
case_arr = itertools.permutations(arr, N)
# 최대값 구하기
max_res = 0
# case_arr 에서 하나씩 꺼내어 case의 최대값을 구한뒤, 전체 최대값과 비교
for case in case_arr:
res = 0
for i in range(1, len(case)):
res += abs(case[i - 1] - case[i])
if max_res < res:
max_res = res
# 최대값 출력하기
print(max_res)
코드 리뷰
- 해당 문제를 푸는데 약 15분 정도 소요했습니다.
- 배열에 들어있는 순서를 바꿔 최댓값을 알아내는 문제이기에, 순서를 바꾼 배열들을 모두 하나씩 확인해야겠다고 생각했습니다.
- 순서를 바꾼 배열들은 itertools.permutations() 를 활용하여 구하고,
- 순서를 바꾼 배열을 하나씩 꺼내서 최대값 구한 뒤, 전체 최대값과 비교하는 로직을 구현했습니다.
'백준 문제풀이' 카테고리의 다른 글
3109번: 빵집 / gold 2 / DFS, 그리디 (0) | 2023.04.27 |
---|---|
5014번: 스타트링크 / silver 1 / BFS (0) | 2023.04.26 |
17413번: 단어 뒤집기 2 / silver 3 / 구현, 스택, 문자열 (0) | 2023.04.24 |
10867번: 중복 빼고 정렬하기 / silver 5 / 정렬 (0) | 2023.04.23 |
2293번: 동전 1 / gold 5 / DP (0) | 2023.04.22 |