https://school.programmers.co.kr/learn/courses/30/lessons/42586
코드
def solution(progresses, speeds):
answer = []
for i in range(1, 101):
cnt = 0
for n, j in enumerate(speeds):
progresses[n] = progresses[n] + j
while progresses:
if progresses[0] >= 100:
progresses.pop(0)
speeds.pop(0)
cnt += 1
else:
break
if cnt != 0:
answer.append(cnt)
if len(progresses) == 0:
break
return answer
풀이
기능별로 진도가 100%가 넘으면 서비스에 반영할 수가 있다. 단, 앞의 진도율이 먼저 100%가 넘어야 뒤의 진도율을 서비스에 반영할 수가 있다. 스택을 사용하면 풀 수 있는 문제이다. 앞의 진도율이 100%가 넘으면 pop 함수를 사용해서 앞의 원소를 제외해주고 그다음에 뒤의 원소가 100%가 넘어있을 때, 다시 pop 함수를 사용해서 뒤의 원소를 제거해주면 되는 문제이다. 만약 진도율이 100%가 넘지 않았다면 다시 for 문을 돌면서 진도를 나가게 된다. 그러다가 100% 넘으면 다시 앞부분의 진도를 pop 해주고 이를 계속 반복하면서 아무 원소가 남지 않을 때까지 해주면 된다.
'Koala - 9기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 2178번 미로 탐색 (0) | 2023.02.05 |
---|---|
[백준 / Python] 9935번 문자열 폭발 (0) | 2023.02.05 |
[백준/C++] 20956번. 아이스크림 도둑 지호 deque풀이 (0) | 2023.02.05 |
[백준/C++] 19591번 독특한 계산기 (0) | 2023.02.04 |
[백준/python] 1863 스카이라인 (0) | 2023.02.03 |