몸과 마음이 건전한 SW 개발자

Softeer level3 조립라인 Python 본문

알고리즘

Softeer level3 조립라인 Python

스위태니 2023. 8. 27. 14:41

문제 링크 : https://softeer.ai/practice/info.do?idx=1&eid=403 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

정답 코드

import sys
input = sys.stdin.readline
N = int(input())
DP = [[0 for _ in range(N-1)] for _ in range(2)]
if N == 1:
    A, B = map(int, input().split())
    print(min(A, B))
else:
    A1, B1, A1ToB2, B1ToA2 = map(int, input().split())
    DP[0][0] = [A1, A1ToB2]
    DP[1][0] = [B1, B1ToA2]
    for idx in range(1, N-1):
        Ai, Bi, AiToB, BiToA = map(int, input().split())
        DP[0][idx] = [min(DP[0][idx-1][0], sum(DP[1][idx-1])) + Ai, AiToB]
        DP[1][idx] = [min(DP[1][idx-1][0], sum(DP[0][idx-1])) + Bi, BiToA]
    A, B = map(int, input().split())
    minTime = min(min(DP[0][N-2][0], sum(DP[1][N-2])) + A, min(DP[1][N-2][0], sum(DP[0][N-2])) + B)
    print(minTime)

칠전팔기

많이 틀린 원인

DP[0][idx] = [min(DP[0][idx-1][0], sum(DP[1][idx-1])) + Ai, AiToB]
DP[1][idx] = [min(DP[1][idx-1][0], sum(DP[0][idx-1])) + Bi, BiToA]

위 아래 차이를 찾으시오.

DP[0][idx] = [min(DP[0][idx-1][0], sum(DP[1][idx-1])) + Ai, AiToB]
DP[1][idx] = [min(DP[1][idx-1][1], sum(DP[0][idx-1])) + Bi, BiToA]

느낀점

혹시나 코딩테스트에서 이런식으로 딱 한 글자 때문에 몇 시간동안 못 풀고 다음 문제로 못 넘어가게 될까 겁난다. 하지만 중요한 것은 뭐라고? 꺾였지만 포기하지 않는 마음.