728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

VERSION 2.0

from collections import deque
import math
import copy

def solution(progresses, speeds):
    answer = []
    b = deque()

    for p,s in zip(progresses, speeds):
        b.append(math.ceil((100-p)/s))
    print(b)
    a = 1
    while True:
        
        if len(b) == 1:
            answer.append(a)
            break
        
        if b[1]<=b[0]:
            a+=1
            del b[1]
        else:
            c = b.popleft()
            answer.append(a)
            a=1

    return answer

VERSION 1.0

from collections import deque
import math


def solution(progresses, speeds):
    answer = []
    res = []
    for i in range(len(progresses)):
        a = int(math.ceil((100-progresses[i]) / speeds[i])) #MATH 모듈의 CEIL 올림함수 이용하여 걸리는 시간 계산
        res.append(a) #res 리스트에 저장
    print(res)
    queue = (deque(res)) #res리스트를 deque화
    a = list(queue)
    cnt = 1 #갯수 첨 부터 1개이므로 1로 초기화
    while True:
        if len(queue) == 1: #while 문 벗어날때 마지막 queue값이 1개만 남았을 경우 break
            answer.append(cnt) 
            break
        else:
            if queue[0]<queue[1]: #맨앞꺼가 뒤에꺼보다 작을경우 일을 더 못하는거므로 
                queue.popleft() #맨앞꺼 없애고
                answer.append(cnt) #answer 리스트에 현재 cnt값 저장하고
                cnt=1 #cnt값 초기화 시켜준다.
            else:
                cnt+=1
                del queue[1] #del queue[1] 이거 기억하자
                idx+=1
    return answer

DEL() 기억하자!!!!!!!!!!!!!!!!!!

 

MATH.CEIL() 올림함수도 기억하자!!!!!!!!!!!!!!!!!!!!!!!!!!

728x90
반응형

+ Recent posts