[Python] 프로그래머스 Level 2 기능 개발

지애·2024년 6월 27일
1

코딩테스트

목록 보기
10/12

point
올림, 비교 기준, list.pop(0)

생각의 흐름

  • 일단 기능마다 총 소요되는 시간을 구했다.(days)
  • days list에서 하나씩 pop 하면서 뒤에 있는 기능이 앞에 있는 기능보다 먼저 끝나면(days가 작거나 같으면) 함께 배포하도록 num을 더해주었다.
  • days list가 모두 pop되면 모든 기능을 배포하는 것으로 생각했다.

풀이

import math

def solution(progresses, speeds):
    days = []
    answer = []
    for i in range(len(progresses)):
        days.append(math.ceil((100-progresses[i])/speeds[i]))

    max_day = days.pop(0)
    num = 1
    while days:
        if days[0] <= max_day:
            days.pop(0)
            num += 1
        else:
            answer.append(num)
            max_day = days.pop(0)
            num = 1
    answer.append(num)
    return answer
  • days list를 만들 때 array를 사용하면 한 번에 계산이 가능할 것 같다.

    다른 풀이 보고 배운 것

  • 100-p 대신 -(p-100)를 쓰면 ceil을 쓰지 않아도 된다! 음수에서 양수로 바뀔 때 자동 올림 효과가 나타나기 떄문!

profile
차근차근

0개의 댓글