문제를 읽은 후 생각
- 100에서 progresses의 값을 뺀 후 그 값을 각 speed 값으로 나눈 후 올림값을 얻는다.
- 이 값이 배포까지 걸리는 일 수가 된다.
- 앞에서부터 비교하면서 뒤의 값이 현재값보다 작다면 같이 배포할 수 있단 뜻이므로 이 점을 고려하여 정답을 도출한다.
코드
더보기
def solution(progresses, speeds):
answer = []
array = []
for num, speed in zip(progresses, speeds):
tmp = 100 - num
array.append(int((tmp / speed) + 0.9))
cnt = 0
while array:
a = array.pop(0)
cnt = 1
if array:
while array and a >= array[0]:
array.pop(0)
cnt += 1
answer.append(cnt)
return answer
고찰
- 문제를 풀긴 했지만 코드가 너무 더럽다고 생각한다. 또한 알고리즘 공부가 아니라 그냥 구현?문제를 푼 것 같아서 다른 사람의 풀이를 볼 필요가 있다고 생각한다.
다른 분 코드
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
이렇게 작성하는 것이 다른 사람이 보기에도 편하고 자신이 보기에도 편하고 좋은 것 같다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
더 맵게 level2 (0) | 2021.07.24 |
---|---|
오픈채팅방 level2 (0) | 2021.07.23 |
짝지어 제거하기 (0) | 2021.07.20 |
[1차] 다트 게임 (파이썬) (0) | 2021.07.14 |
숫자 문자열과 영단어 (파이썬) (0) | 2021.07.13 |
댓글