m1ndy5's coding blog

99클럽 코테 스터디 3일차 TIL 스택/큐 : 프로그래머스 LV.2 기능개발 with Python 본문

알고리즘 with python/알고리즘 스터디

99클럽 코테 스터디 3일차 TIL 스택/큐 : 프로그래머스 LV.2 기능개발 with Python

정민됴 2024. 5. 22. 13:35

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제는 위쪽에서!

 

def solution(progresses, speeds):
    answer = []
    days = []
    cnt = 1
    
    l = len(progresses)
    
    # 나머지가 있으면 완료까지 + 1
    for i in range(l):
        day = (100-progresses[i]) // speeds[i]
        rest = (100-progresses[i]) % speeds[i]
        
        if rest > 0:
            day += 1
            
        days.append(day)
    
    # 제일 앞 기준
    base = days[0]
        
    for i in range(1, l):
        # 기준보다 큰 날짜가 나오면 그 날짜가 기준이 되고 그 전까지의 작업들 배포
        if days[i] > base:
            answer.append(cnt)
            base = days[i]
            cnt = 1
        else:
            cnt += 1
    answer.append(cnt)
            
    return answer

조금 코드를 복잡하게 작성한 감이 없지않아 있다.

math.ceil(올림함수) 을 사용하면 되는데 이걸 몰라서 저렇게 했다ㅎ

그리고 이전에 공부했던 zip함수를 사용해서

for p, s in zip(progresses, speeds):
    day = math.ceil((100-p)/s)

이렇게 하면 더 깔끔하게 나타낼 수 있었다.