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

[프로그래머스] 기능개발 (level 2) Python 문제 풀이

by daewooki 2021. 6. 25.
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

문제

 

 

문제 해결법

1. 먼저 각 작업이 최소 몇 일을 작업해야 배포가 가능한지 계산하여 리스트에 넣어준다.

2. 리스트를 순환하며 먼저 배포해야하는 작업보다 걸리는 일 수가 적은 것들은 카운트를 세어주고, 일 수가 더 큰 작업이 나올 경우에 결과 리스트에 값을 넣어준다. 

3. 끝까지 돌았을 경우에 마지막 count를 한번 더 넣어준다. 

 

내 코드

1. math를 써준 이유는 나머지 작업에서 속도를 나누었을 때 최소 걸리는 시간이 실수로 떨어지게 되면 무조건 하루가 더 필요하므로 올림을 해주기 위해서이다. 

2. required_day 리스트를 한 줄로 만들어주었다. zip으로 묶어서 각 리스트의 값을 받아오고, 100-i가 잔여 작업, j가 속도로써 두 개를 나눠서 올림해주었다. 

3. 소요 시간 리스트에서 가장 앞에부터 순환해야되므로 deploy_cnt=0, temp_day=required_day[0] 으로 해주었다. 

4. for문 돌면서 i+1번째가 temp_day 보다 큰게 나오는 경우 결과 리스트에 넣고 초기화를 반복했다. 

 

 

스택/큐 유형에 등록된 문제이지만 거의 대부분 이렇게 풀었을 것 같다. 

Level 2보다는 1에 가까운 문제인 것 같다. 

 

 

반응형

댓글