성장기록지
프로그래머스 LV2 기능 개발 본문
문제

풀이
스택,큐를 활용해 풀으라고 써있는데, 그냥 단순한 구현문제 같았다.
작업에 걸리는 날짜를 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
'알고리즘' 카테고리의 다른 글
leetcode 1248. Count Number of Nice Subarrays (0) | 2025.02.20 |
---|---|
프로그래머스 LV2 올바른 괄호 (0) | 2025.02.19 |
백준 20056 마법사 상어와 파이어볼 (python) (0) | 2025.02.02 |
프로그래머스 Lv3 이중 우선순위 큐 (0) | 2025.01.29 |
프로그래머스 lv3 정수 삼각형 (python) (1) | 2025.01.25 |