관리 메뉴

JIE0025

[Softeer][level3] 조립라인 - 파이썬(Python) 본문

알고리즘/Softeer

[Softeer][level3] 조립라인 - 파이썬(Python)

Kangjieun11 2023. 2. 2. 23:31
728x90

 

https://softeer.ai/practice/info.do?idx=1&eid=403&sw_prbl_sbms_sn=140490 

 

Softeer

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

softeer.ai

 

 

문제

동일한 자동차를 생산하는 2개의 조립 라인 A와 B가 있다. 두 조립라인에는 각각 N개의 작업장이 있다. 각각의 작업장을 Ai (1 ≤ i ≤ N)와 Bi (1 ≤ i ≤ N)로 표시하자. Ai 작업장과 Bi 작업장은 동일한 작업을 수행하지만 작업시간은 다를 수 있다. A 조립 라인의 경우 A1 작업장에서 최초 조립이 시작되고, Ai 작업장에서 작업이 종료되면 바로 Ai+1 작업장에서 작업을 시작할 수 있다.

 

B 조립 라인도 동일한 방식으로 조립을 진행한다. Ai 작업장에서 Bi+1작업장으로 혹은 Bi 작업장에서 Ai+1작업장으로 반조립 제품의 이동이 가능(이동시간이 추가됨)할 때 자동차 1대의 가장 빠른 조립 시간을 구하여라.

 

 

 


💡 사고 과정 

일단 문제를 이해하는데 조금 걸렸다.

테스트케이스가 하나밖에없어서 하나를 만들었더니 이해에 도움이 되었다.

 

 

 

 

💻 내가 쓴 정답코드

import sys
input = sys.stdin.readline 

n = int(input())

a,b,moveAtoB,moveBtoA = [0]*(n+1), [0]*(n+1), [0]*(n+1), [0]*(n+1)

for i in range(1,n):
    ai, bi, moveAtoB[i], moveBtoA[i] = map(int,input().split())

    #입력 들어올 때 마다 최소값 갱신...
    if i == 1:
        a[i], b[i] = ai, bi
        continue

    #01) A 업데이트
    check1 = b[i-1] + moveBtoA[i-1] + ai      #B(i-1) -> A(i)
    check2 = a[i-1] + ai  #A(i-1) -> A(i)
    a[i] = min(check1, check2)   


    #02) B 업데이트
    check1 = a[i-1] + moveAtoB[i-1] + bi      #A(i-1) -> B(i)
    check2 = b[i-1] + bi  #B(i-1) -> B(i)
    b[i] = min(check1, check2)   


#print(a)
#print(b)

                                                                                                                                                                                                                                                           
aN ,bN = map(int,input().split())
check1 = b[n-1] + moveBtoA[n-1] + aN
check2 = a[n-1] + aN
a[n] = min(check1, check2)   

check1 = a[n-1] + moveAtoB[n-1] + bN
check2 = b[n-1] + bN
b[n] = min(check1, check2)


#aLine[N] , bLine[N] 비교해서 더 작은 게 가장 빠른 조립시간이다.     
if (a[n] <= b[n]): 
    print(a[n]) 
else: 
    print(b[n])