[프로그래머스 | 파이썬] 기능개발

devheyrin·2022년 6월 15일
0

codingtest

목록 보기
59/65

wow 2단계 진입하자마자 풀이 시간이 2배가되엇다..
1단계는 1시간에 6문제도풀고 그랬는데..;
2문제만 풀더라도 제대로 풀려고 노력해야겠다!

문제 링크

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

코드

def solution(progresses, speeds):
    answer = []
    while True:
    
        if not progresses:
            return answer

        cnt = 0
        for i in range(len(progresses)):
            if progresses[i] == 100:
                cnt += 1
            else:
                break
                
        if cnt:
            answer.append(cnt)
            progresses = progresses[cnt:]
            speeds = speeds[cnt:]
        
        for i in range(len(progresses)):
            if progresses[i] + speeds[i] >= 100:
                progresses[i] = 100
            else:
                progresses[i] += speeds[i]
        
    return answer

풀이 설명

progresses 배열에서 완료된 작업을 빼는 과정 처리 때문에 시간이 오래 걸렸다.
처음 시도에서 완료 작업 빼는 기준을 sum() == 100*(100이 마지막으로 등장한 인덱스) 로 놓는 바람에... 죽어도 결과가 안나왔다
그냥 for문을 한번 더 돌려서 작업률이 100이면 횟수를 +1 하고, 100이 아니게 되는 순간 반복문을 중단한 뒤 cnt 를 answer 배열에 추가해주었다.
answer 배열에 추가할 때 꼭 해주어야 하는 작업은 progresses, speeds 배열에서도 완료된 작업들을 빼는 것!
이렇게 작업들을 제외시키다가, progresses 배열이 비는 순간 answer 를 리턴해주면 끝!

profile
개발자 헤이린

0개의 댓글