https://programmers.co.kr/learn/courses/30/lessons/42586
95 - 100를 일차로 두고 speed로 나누었을 때 몫을 리스트로 두고
앞수를 기준으로 따라 크거나 같으면 cnt를 증가시키고,
더 큰수이면 다시 그 수를 기준으로 cnt를 측정하고,
정답을 뽑아냈다.
def solution(progresses, speeds):
from collections import deque
answer =[]
success = deque()
for progress, speed in zip(progresses, speeds):
success.append((100-progress)//speed)
while success:
day= success.popleft()
cnt =1
if len(success) == 0:
answer.append(cnt)
break
while success[0] <= day:
cnt += 1
success.popleft()
if len(success) == 0:
break
answer.append(cnt)
return answer
어머나? 한문제만 풀리지 않아 당황했다.
내가 놓친 부분이 있을까? 문제를 다시 보았으나..
이런.. 올림을 해야했지만 내가 했던건 전부 남은 일수를 버리는 몫만 구하는 수를 사용했던것
그래서 올림을 코드로 구현하여 표현했더니 통과과 되었다.
def solution(progresses, speeds):
from collections import deque
answer =[]
success = deque()
for progress, speed in zip(progresses, speeds):
work_time = (100-progress)//speed
if (100-progress)%speed != 0:
work_time = work_time + 1
success.append(work_time)
while success:
day= success.popleft()
cnt =1
if len(success) == 0:
answer.append(cnt)
break
while success[0] <= day:
cnt += 1
success.popleft()
if len(success) == 0:
break
answer.append(cnt)
return answer
for progress, speed in zip(progresses, speeds):
work_time = (100-progress)//speed
if (100-progress)%speed != 0:
work_time = work_time + 1
for progress, speed in zip(progresses, speeds):
work_time = -((progress-100)//speed)
간단하게 사용한 코드를 보고 한번 더 놀라웠다.
또한 math 라이브러리에서 ceil이 올림을 만들어 줄 수 있었다.(라이브러리를 사용하는 것도 좋지만 음수를 사용한것이 놀라웠다.)
하지만 조금더 FIFO문제에 익숙해진 것같아 좋았다.
[coding_test]큰 수 만들기 (0) | 2021.06.09 |
---|---|
[coding_test]크레인 인형뽑기 (0) | 2021.05.31 |
[coding_test]더 맵게 (0) | 2021.05.24 |
[coding_test]음양 더하기 (0) | 2021.05.20 |
[coding_test]로또의 최고 순위와 최저 순위 (0) | 2021.05.20 |