새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[백준] 10819 차이를 최대로

by 언호 2021. 12. 31.

📖 문제


🧑🏻‍💻 풀이 과정

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

 

10819번: 차이를 최대로

첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > 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

댓글