본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2666 벽장문의 이동

by Alan_Kim 2023. 5. 6.
728x90
반응형

https://www.acmicpc.net/problem/2666

 

2666번: 벽장문의 이동

첫 번째 줄에 벽장의 개수를 나타내는 3보다 크고 20보다 작거나 같은 하나의 정수, 두 번째 줄에 초기에 열려있는 두 개의 벽장을 나타내는 두 개의 정수, 그리고 세 번째 줄에는 사용할 벽장들

www.acmicpc.net

 

문제 해결

  • 재귀를 이용해 모든 경우를 해보면서 최적의 해를 출력
  • 내 생각에는 함수 구현 문제라고 보는 겻이 편하다.

 

CODE

import sys
input = sys.stdin.readline

n = int(input())
first, second =map(int,input().split())
m = int(input())
orders = []
dp = [[[0 for _ in range(n+1)] for _ in range(n+1)] for _ in range(n+1)]
for _ in range(m):
    orders.append(int(input()))

def solve(x,door1,door2):
    if x ==m:
        return 0
    val = orders[x]
    dp[val][door1][door2] = min(abs(val-door1)+solve(x+1,val,door2), abs(val-door2)+solve(x+1,door1,val))
    return dp[val][door1][door2]
print(solve(0,first,second))
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 2157 여행  (0) 2023.05.07
[python] 백준 1132 합  (0) 2023.05.07
[python] 백준 2831 댄스 파티  (0) 2023.05.06
[python] 백준 13144 List of Unique Numbers  (0) 2023.05.06
[python] 백준 1062 가르침  (0) 2023.05.05

댓글