문제
풀이
케이스 1번에서 배포 가능한 일은 7, 3, 9 이다.
먼저 이렇게 시간을 계산해 놓고 앞의 숫자들보다 큰 수가 나올 때까지 count하다가 큰 수가 나오면 count를 answer에 저장하면 될 것 같았다.
스택과 큐를 사용한 풀이는 아니었지만 한번 해봤다.
그리고 풀면서 굳이 시간을 먼저 계산하고 배열에 넣을 필요 없이 계산하면서 count해도 문제가 없을 것 같아 그렇게 수정했다.
import math
def solution(progresses, speeds):
answer = []
maxValue = math.ceil((100 - progresses[0]) / speeds[0])
count = 1
for i in range(1, len(progresses)):
if maxValue < math.ceil((100 - progresses[i]) / speeds[i]):
maxValue = math.ceil((100 - progresses[i]) / speeds[i])
answer.append(count)
count = 1
else:
count += 1
answer.append(count)
return answer
바로 통과했다. 다른 레벨 2에 비해 쉬운 문제였다
다른 분의 코드
def solution(progresses, speeds):
Q=[]
for p, s in zip(progresses, speeds):
if len(Q)==0 or Q[-1][0]<-((p-100)//s):
Q.append([-((p-100)//s),1])
else:
Q[-1][1]+=1
return [q[1] for q in Q]
멋있당
배울 점
1. 길이가 같은 배열을 zip을 사용해 간결하게 표현했다.
2. math.ceil()함수 없이 -(p-100)//s로 올림처리했다. 👍
3. count 변수 없이 Q에 바로 저장해 깔끔해 보인다.
'알고리즘 스터디' 카테고리의 다른 글
[프로그래머스] 완전탐색 2. 소수 찾기 (0) | 2021.03.14 |
---|---|
[프로그래머스] 스택/큐 4. 프린터 (0) | 2021.03.07 |
[프로그래머스] 정렬 3. H-Index (0) | 2021.02.28 |
[프로그래머스] 스택/큐 1. 다리를 지나는 트럭 (0) | 2021.02.28 |
[프로그래머스] 탐욕법 3. 큰 수 만들기 (0) | 2021.02.24 |