코테 준비

[프로그래머스/python] 기능 개발

우디혜 2020. 9. 4. 16:14

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

로직

  • progress가 100% 이상이 되기 까지 필요한 일수(days)를 계산
    • lst에 모든 days를 넣어주었다.
  • 계산된 days를 iterate하면서 다음과 같은 조건문으로 답을 구했다.
    • if prev가 초기화 값(0)이면 prev에 값을 넣어준다.
    • elif prev < 현재 days 값이면 현재 count값을 answer 리스트에 넣어주어 count를 종료, count를 새로 시작해준다.
    • else prev >= 현재 days 값이면 count해준다. (앞에 있는 기능이 배포될 때 함께 배포 가능)
  • for문 밖을 빠져나올 때, counter 값이 0이 아니라면 마지막 배포가 아직 안끝난 상황이므로 counter를 answer에 넣어준다.
  • 리턴

코드


import math
def solution(progresses, speeds):
    answer = []
    lst = []
    for p, s in zip(progresses, speeds):
        days = math.ceil((100 - p)/s)
        lst.append(days)

    prev, counter = 0, 0
    for x in lst:
        if prev == 0:
            prev = x
            counter +=1
        elif prev < x:
            answer.append(counter)
            counter = 1
            prev = x
        else:
            counter +=1
    if counter > 0:
        answer.append(counter)

    return answer

TIP

Math 라이브러리

  • progress가 100% 이상이 되기 까지 필요한 일수를 계산하기위해 올림을 사용
import math

math.ceil() # 올림
math.floor() # 내림
math.trunc() # 버림

round() # 반올림

zip()

  • iterables한 데이터(list, string, dict 등) 두 개를 받아 같은 인덱스의 element끼리 tuple로 묶어준다.
  • ex) lst1 = ['a', 'b', 'c'] lst2 = ['1','2'] zip(lst1, lst2) = [('a', '1'), ('b', '2')]