본문 바로가기
프로그래머스/Python

[프로그래머스] 기능개발 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 23.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 각 작업별 남은 일수를 저장할 리스트를 생성한다. days = list()
  2. 작업의 개수만큼 반복하며 for i in range(len(progresses))
  3. 남은 일수를 저장할 변수를 생성하고 남은 작업을 계산한 후, 하루 작업 속도를 나눈 몫을 저장한다. times = (100 - progresses[i]) // speeds[i]
  4. 만약 남은 작업을 하루 작업 속도로 나눈 나머지가 0보다 크면(나머지가 있으면) if ((100 - progresses[i]) % speeds[i] > 0)
  5. 남은 일수에 1을 더한다. times += 1
  6. 각 작업별로 구한 남은 일수를 리스트에 추가한다. days.append(times)
  7. 기능의 개수를 세어줄 변수를 생성하고 초기화한다. count = 0
  8. 일수의 최댓값을 저장할 변수를 생성하고 일수의 첫 번째 값을 저장한다. Max = days[0]
  9. 일수 값을 하나씩 추출하여 for i in days
  10. 만약 추출한 일수보다 최댓값이 크거나 같으면 기능의 개수에 1을 더해준다. if (Max >= i): count += 1
  11. 반면에 추출한 일수보다 최댓값이 더 작으면 else
  12. 기능의 개수를 정답 리스트에 추가한다. answer.append(count)
  13. 최댓값을 추출한 일수로 다시 저장한다. Max = i
  14. 기능의 개수를 1로 다시 저장한다. count = 1
  15. 모든 일수를 확인했으면 마지막으로 기능의 개수를 정답 리스트에 추가한다. answer.append(count)
반응형

3. 소스코드

def solution(progresses, speeds):
    answer = []
    
    days = list()
    for i in range(len(progresses)):
        times = (100 - progresses[i]) // speeds[i]
        if ((100 - progresses[i]) % speeds[i] > 0):
            times += 1
        
        days.append(times)
    
    count = 0
    Max = days[0]
    for i in days:
        if (Max >= i):
            count += 1
        else:
            answer.append(count)
            Max = i
            count = 1
    
    answer.append(count)
    
    return answer
728x90
반응형