선발대

[스파르타] 99클럽 2기 코테스터디 3일차 TIL / 기능개발 본문

스파르타코딩클럽/활동 내용

[스파르타] 99클럽 2기 코테스터디 3일차 TIL / 기능개발

신선한 스타트 2024. 5. 22. 23:46

프로그래머스: 기능개발 (링크)

 

먼저 days라는 리스트를 두고 작업이 완료되는 날들을 append 해야 한다. 다만 하루의 끝에서 배포가 이루어지므로 만약 progresses가 speeds로 나누어 떨어지지 않으면 +1을 해줘야 한다.

 

그 후 temp라는 변수에 days[0] 값을 초기값으로 두고 days 리스트를 1번째 인덱스부터 끝까지 돌면서 temp와 days[i]를 비교한다. 만약 temp가 days[i] 보다 크다면 days[i]는 temp가 끝날 때까지 대기해야 하므로 cnt에 +1을 해준다. 그 반대의 경우라면 그대로 answer 리스트에 cnt 값을 넣어준다. 모든 for문을 돌고 나면 최종 cnt가 answer 리스트에 추가되지 않은 채로 끝나므로 마지막 줄에 answer.append(cnt)를 추가해줘야 한다. 그리고 answer 리스트 리턴하면 끝! 

 

def solution(progresses, speeds):
    n = len(progresses)
    days = []
    
    for i in range(n):
        remain = 100 - progresses[i]
        if remain % speeds[i] != 0:
            day = remain // speeds[i] + 1
        else:
            day = remain // speeds[i]
        days.append(day)
    
    temp = days[0]
    answer = []
    cnt = 1
    
    for i in range(1, n):
        if days[i] > temp:
            answer.append(cnt)
            cnt = 1
            temp = days[i]
        else:
            cnt += 1
    answer.append(cnt)
    return answer

오늘 미들러 풀이 끝!

Comments