코딩테스트 연습 - 기능개발 | 프로그래머스 스쿨 (programmers.co.kr)
스택과 큐를 활용하는 문제이다.
스택과 큐 문제는 대부분 구현 가능하기는 한데
문제에서 주어진 상황에서 스택과 큐를 어떤 방식으로 활용해야 할지 아직 감을 못잡겠다.
그래서 처음에는 for문을 3개나 사용하여 해결하였더니 복잡한 코드가 나왔다.
def solution(progresses, speeds):
answer = []
for i in range(len(progresses)):
rest=100-progresses[i]
if rest % speeds[i] == 0:
progresses[i]=(rest // speeds[i])
else:
progresses[i]=(rest // speeds[i])+1
for i in range(len(progresses)-1):
if progresses[i] >= progresses[i+1]:
progresses[i+1]=progresses[i]
cnt=1
for i in range(1,len(progresses)):
if progresses[i] == progresses[i-1]:
cnt+=1
else:
answer.append(cnt)
cnt=1
if i == len(progresses)-1:
answer.append(cnt)
print(answer)
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
문제에서 원하는 풀이 방식인 것 같다.
나는 배포일자를 모두 구한 다음 시작하려고 했는데
잘못된 생각이었다.
앞으로 스택/큐 관련 문제를 많이 풀어봐야 할 것 같다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
[python] 14891 - 톱니바퀴 (0) | 2023.06.09 |
---|---|
[python] 1976 - 여행 가자 (0) | 2023.06.01 |
[java/python] 프로그래머스 Lv2. - n진수 게임 (1) | 2023.05.26 |
[python] 4803 - 트리 (3) | 2023.05.26 |
[python] 1167 - 트리의 지름 (0) | 2023.05.23 |