반응형
Recent Posts
Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 기능개발
- 코딩테스트준비
- Python
- 해시
- 딥러닝
- boj 2309
- 99항해
- 항해99
- 혁펜하임
- 알고리즘
- leetcode
- 백준
- easy 딥러닝
- 개발자취업
- 활성화 함수
- 큐
- dfs
- python 2309
- 파이썬
- softeer
- BOJ
- 코딩테스트 준비
- 99클럽
- 백준 2309
- til
- 구현
- 개발자 취업
- 프로그래머스
- BFS
- 스택
Archives
- Today
- Total
동까의 코딩
[python] 프로그래머스 - 기능개발 본문
반응형
파이썬 [프로그래머스] - 기능개발
문제 설명
프로그래머스의 기능개발 문제는 각 작업의 진행 상황(progresses)과 작업 속도(speeds)가 주어졌을 때,
작업이 100% 이상 완료되면 배포하는 방식으로, 배포마다 동시에 몇 개의 작업이 완료되는지를 구하는 문제입니다.
문제 조건
- 각 작업은 매일 일정한 속도로 진행됩니다.
- 작업은 순서대로 배포되며, 앞 작업이 완료되어야 뒷 작업도 함께 배포될 수 있습니다.
- 한 번의 배포에 여러 작업이 동시에 완료될 수 있습니다.
문제 접근 방식
- 시간 시뮬레이션
time
변수를 사용해 경과한 날짜를 추적합니다.
- 완료 조건 체크
- 각 작업의 진행도는
progress + time * speed
로 계산합니다. - 첫 번째 작업이 100% 이상이면 작업을 제거(pop)하고 배포할 작업의 수(
count
)를 증가시킵니다.
- 각 작업의 진행도는
- 배포 기록
- 첫 번째 작업이 아직 완료되지 않았다면, 지금까지 완료된 작업 수(
count
)를 결과 리스트에 추가하고
하루(time
)를 증가시킵니다.
- 첫 번째 작업이 아직 완료되지 않았다면, 지금까지 완료된 작업 수(
- 최종 처리
- 모든 작업이 완료된 후, 마지막 배포된 작업 수를 결과에 추가합니다.
문제 풀이
내가 푼 코드
def solution(progresses, speeds): answer = [] for i in range(len(progresses)): progresses[i] = 100 - progresses[i] if progresses[i] % speeds[i] != 0: progresses[i] = progresses[i] // speeds[i] + 1 else: progresses[i] = progresses[i] // speeds[i] cnt = 1 work_day = progresses[0] for i in range(1, len(progresses)): if progresses[i] <= work_day: cnt += 1 else: answer.append(cnt) work_day = progresses[i] cnt = 1 answer.append(cnt) return answer
GPT가 최적화 한 코드
def solution(progresses, speeds): answer = [] time = 0 count = 0 # 모든 작업이 완료될 때까지 반복 while len(progresses) > 0: # 첫 번째 작업이 완료되었는지 확인 if (progresses[0] + time * speeds[0]) >= 100: # 완료된 작업을 리스트에서 제거하고 배포할 작업 수 증가 progresses.pop(0) speeds.pop(0) count += 1 else: # 현재까지 완료된 작업이 있다면 배포 기록에 추가 if count > 0: answer.append(count) count = 0 # 하루를 증가시키며 작업 진행 상황 업데이트 time += 1 # 마지막에 남은 배포 작업 수 추가 answer.append(count) return answer
반응형
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[python] 프로그래머스 - 네트워크 (0) | 2025.04.06 |
---|---|
[python] 프로그래머스 - 가장 큰 수 (0) | 2025.03.20 |
[python] 프로그래머스 - 베스트 앨범 (1) | 2025.03.12 |
[python] 프로그래머스 - 의상 (0) | 2025.03.12 |
[python] 프로그래머스 - 전화번호 목록 (0) | 2025.03.11 |