Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

성장기록지

프로그래머스 LV2 기능 개발 본문

알고리즘

프로그래머스 LV2 기능 개발

pengcon 2025. 2. 17. 23:21

문제

풀이

스택,큐를 활용해 풀으라고 써있는데, 그냥 단순한 구현문제 같았다.

작업에 걸리는 날짜를 date라는 리스트에 모아놓았다.

작업에 걸리는 날짜는 소숫점 단위일때 올림을 해줘야 하므로 (예를들어 2.3이면 3으로)

a를 b로 나눌 때 올림하는 공식인 (a+b-1 // b) 를 활용하였다.

그다음 date를 순회하며 처음에 max_num 에 작업이 걸리는시간을 넣어준다.

이후 이전 작업보다 이후 작업에서 걸리는 날짜가 많을경우에 max_num을 갱신하고, answer 리스트에 답을 추가해주고,

count 0으로 초기화해준다.

아닐 경우에는 count 변수를 증가시켜주는 식으로 문제를 풀었다.

O(N)으로 문제를 해결할 수 있었다.

 

코드

def solution(progresses, speeds):
    answer = []
    date = []
    max_num = 0
    count = 0
    for i in range(len(speeds)):
        date.append(((100-progresses[i]) + (speeds[i]-1)) // speeds[i])
        
    for i in date:
        if max_num == 0:
            count += 1
            max_num = i
        elif max_num < i:
            max_num = i
            answer.append(count)
            count=1
        else:
            count += 1
    if count>0:
        answer.append(count)

    return answer