보물창고 블로그

SW Expert Academy 2477. [모의 SW 역량테스트] 차량 정비소 풀이 With Python 본문

알고리즘 풀이/SW Expert Academy

SW Expert Academy 2477. [모의 SW 역량테스트] 차량 정비소 풀이 With Python

홋 메 2020. 3. 25. 23:05
728x90

문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV6c6bgaIuoDFAXy&categoryId=AV6c6bgaIuoDFAXy&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

문제를 처음 보았을 때는 상당히 막막했다. 2시간 정도 고민 후에 코드를 짜기 시작했다.  문제에 설명된 대로 그대로 구현하니 통과가 되었다. 해결한 코드는 아래와 같다. recepnum과 repairnum에 접수대 번호와 정비소 번호를 넣어서 해당 접수대 번호와 정비소 번호를 가진 고객이 있을 때 answer의 카운트를 1씩 증가하였다. 

t = int(input())
for test in range(1, t + 1):
    # 접수대 정비소 고객수 접수대번호 정비소 번호
    n, m, k, a, b = map(int, input().split())
    recept = list(map(int, input().split()))
    repair = list(map(int, input().split()))
    customer = list(map(int, input().split()))
    new = []
    answer = 0
    recenum = []
    repairnum = [0] * k
    receptime = [-1] * n
    repairtime = [-1] * m
    for c in range(k):
        flag = 0
        for num in range(n):
            if receptime[num] < customer[c]:
                receptime[num] = customer[c] + recept[num] - 1
                recenum.append(num)
                flag = 1
                new.append([receptime[num]+1, num, c])
                break
        if flag == 0:
            idx = receptime.index(min(receptime))
            recenum.append(idx)
            receptime[idx] += recept[idx]
            new.append([receptime[idx] + 1, idx, c])
    new.sort()
    for i in new:
        flag = 0
        for num in range(m):
            if repairtime[num] < i[0]:
                repairtime[num] = i[0] + repair[num] - 1
                repairnum[i[2]] = num
                flag = 1
                break
        if flag == 0:
            idx = repairtime.index(min(repairtime))
            repairnum[i[2]] = idx
            repairtime[idx] += repair[idx]
    for k1 in range(k):
        if recenum[k1] + 1 == a and repairnum[k1] + 1 == b:
            answer += (k1 + 1)
    if answer == 0:
        answer = -1
    print('#{} {}'.format(test, answer))
Comments