👩‍💻 코테 공부/코테 공부

[코테 - py] 과제 진행하기

수댕ʕت̫͡ʔ 2024. 7. 29. 14:12

https://school.programmers.co.kr/learn/courses/30/lessons/176962

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

과제에 대한 순서를 출력하는 큐 문제였다. 구현 +큐 문제였는데 풀다가 계속 막혀서 결국 풀이를 살짝 보고 풀었다.

다음에 복습을 해야겠다.

 

from collections import deque

def solution(plans):
    answer = []
    
    def time(s):
        h, m = map(int, s.split(":"))
        temp = h * 60 + m
        return temp
    
    for i in range(len(plans)):
        plans[i][1] = time(plans[i][1])
        plans[i][2] = int(plans[i][2])
        
    plans = sorted(plans, key=lambda x: x[1])
    
    queue = deque()
    
    left = 0
    
    for i in range(len(plans)):
        name, start, need = plans[i]
        
        while queue:
            name1, need1 = queue.pop()
            if left >= need1:
                left -= need1
                answer.append(name1)
            else:
                queue.append((name1, need1-left))
                break
                
        queue.append((name, need))
        
        
        if i < len(plans) - 1:
            nstart = plans[i+1][1]
            left = nstart - start
            
    while queue:
        name1, need1 = queue.pop()
        answer.append(name1)
        

        
    return answer