import math
def solution(progresses, speeds):
Q=[]
for p, s in zip(progresses, speeds):
if len(Q)==0 or Q[-1][0]<(math.ceil((100-p)/s)):
Q.append([math.ceil((100-p)/s),1])
else:
Q[-1][1]+=1
print(Q)
return [q[1] for q in Q]
배포되기 전 남은 일수는 math.ceil((100-p)/s) 로 계산한다. (ceil: 올림)
이해를 위해 아래 테스트2 의 예시를 보자면
배포되기 전 남은 일수는 (100-95)/1=5, (100-90)/1=10, (100-99)/1=1, (100-99)/1=1, (100-80)/1=20, (100-99)/1=1 일이 남았다.
직전에 있는 math.ceil((100-p)/s) 보다 현재의 math.ceil((100-p)/s)이 더 크면 1로 초기화,
직전에 있는 math.ceil((100-p)/s) 보다 현재의 math.ceil((100-p)/s)이 더 작으면 1을 누적하는 식으로 작동한다면 답을 구할 수 있다.
다른 사람 풀이에 math.ceil((100-p)/s) 대신 -((p-100)//s)로 푼 사람이 있었는데 (p-100) => 음수, (p-100) // s => 내림한 음수(음수에서 내림은 절대값은 커짐), -((p-100)//s) => 올림한 양수 방식으로 올림을 하였다. 신박하군...
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Coding Test > Python' 카테고리의 다른 글
[Programmers][코딩테스트연습/정렬] K번째수 (0) | 2023.07.21 |
---|---|
[Programmers][코딩테스트연습/힙(Heap)] 더 맵게 (0) | 2023.07.20 |
[Programmers][코딩테스트연습/해시] 완주하지 못한 선수 (0) | 2023.07.17 |
[Python3] Programmers 프로그래머스 Level 1 (0) | 2021.10.14 |
[알고리즘] 그래프 이론 : 서로소 집합, 신장 트리, 크루스칼, 위상 정렬 (0) | 2021.10.12 |
댓글