📖 문제
🧑🏻💻 풀이 과정
1) 문제 이해 및 접근
숫자들을 정렬하여 큰수와 작은수를 적절히 이용하여 계산하는 방식으로 접근
문제가 해결되지 않는것을 알아내서 완전 탐색 이용
2) 알고리즘
- 브루트포스
3) 풀이 코드
사용 언어 - Python
import sys
sys.stdin = open('input.txt')
def DFS(n, pre, ans): # 숫자를 선택한 횟수, 이전에 선택한 값, 지금까지 계산한 결과 값
global answer
if n >= N-1 and answer <= ans: # 모든 숫자들을 계산하고, 계산 결과가 최댓값일때
answer = ans # 정답 갱신
return
for i in range(N): # 숫자 리스트 반복
if not selected[i]: # 아직 사용하지 않은 숫자이면
selected[i] = 1 # 사용 처리
DFS(n+1, num_li[i], ans + abs(pre - num_li[i])) # 재귀 호출 (사용 개수 추가, 현재 값, 이전값-현재값의 절대값)
selected[i] = 0 # 사용 되돌리기
N = int(sys.stdin.readline()) # 숫자 개수
num_li = list(map(int, sys.stdin.readline().split())) # 숫자 리스트
selected = [0] * N # 숫자 사용 여부 리스트
answer = 0
for i in range(N): # 첫번째 숫자 반복
selected[i] = 1
DFS(0, num_li[i], 0) # DFS 함수 호출
selected[i] = 0
print(answer) # 출력
📝 결과 및 학습한 내용
1) 어려웠던 내용
특별히 없습니다
2) 새롭게 학습한 내용
특별히 없습니다
🔗 문제 링크
- https://www.acmicpc.net/problem/10819
※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다
'알고리즘 문제풀이 > Python' 카테고리의 다른 글
[백준] 9663 N-Queen (0) | 2022.01.02 |
---|---|
[백준] 1759 암호 만들기 (0) | 2022.01.01 |
[백준] 7662 이중 우선순위 큐 (0) | 2021.12.30 |
[백준] 1747 소수&팰린드롬 (0) | 2021.12.29 |
[백준] 6497 전력난 (0) | 2021.12.28 |
댓글