[풀이]
처음 풀이
def solution(progresses, speeds):
answer = []
while True:
cnt = 0
while True:
if len(progresses) != 0:
if progresses[0] >= 100:
progresses.pop(0)
speeds.pop(0)
cnt += 1
else:
if cnt > 0:
answer.append(cnt)
break
else:
answer.append(cnt)
break
if len(progresses) != 0:
for i in range(len(progresses)):
progresses[i] += speeds[i]
else :
break
return answer
- 가장 먼저 progresses의 length를 판단해서 progresses의 첫번째 인덱스가 100보다 크거나 같을 경우, progresses와 speeds의 첫번째 인덱스 값을 동시에 pop
- pop과 동시에 카운트 개수 늘림
- 만약 progresses의 첫번째 인덱스가 100보다 작을 경우엔 answer에 카운트 값을 업데이트(0보다 큰 경우)
- 아래에선 지속적으로 progresses에 speeds를 더해줌
[풀이 후기]
for문으로 뭔가 풀 면 더 괜찮을 것 같은데, 아무래도 계속 while과 if를 쓰다보니 조금 코드가 지저분해진 감이 있다. 아무래도 이번 문제는 큐를 통해서 풀면 좋았을 것 같은데, 리스트의 pop으로만 구현이 가능할 것 같아서 이렇게 했다. 스택/큐가 생각보다 구현이 어렵지 않은 것 같다.
'코딩테스트 스터디 > 프로그래머스' 카테고리의 다른 글
[LV2/스택/큐] 프로세스 (0) | 2023.07.17 |
---|---|
[LV2/스택/큐] 올바른 괄호 (0) | 2023.07.17 |
[LV3/SQL] 헤비 유저가 소유한 장소 (3) | 2023.07.15 |
[LV 2/정렬] 가장 큰 수 (0) | 2023.07.15 |
[LV2/해시] 의상 (0) | 2023.07.15 |