프로그래밍 공부방
[프로그래머스] 스택/큐_기능개발 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(progresses, speeds):
answer = []
while progresses[0] < 100:
result = 0
if progresses[0] == 0:
break
for i in range(len(progresses)):
if progresses[i] != 0:
progresses[i]+= speeds[i]
else:
break
while progresses[0] >= 100:
progresses.pop(0)
speeds.pop(0)
progresses.append(0)
speeds.append(0)
result += 1
if result>0:
answer.append(result)
return answer
우선 기능의 진도가 100%가 되어야 서비스에 반영할 수 있기 때문에 진도가 100미만일 때 반복하게 했다.
for문쪽에서는 기능별로 각각의 진행속도를 더해주는 작업을 했다.
현재 작업 진도 리스트에서 첫 번째 값을 보았을 때 이것이 100 이상이면 작업진도 리스트와 작업 속도 리스트에서 맨 처음 값을 pop해주었다. 하나의 값을 pop한 후에는 append를 이용해서 맨 뒤에 0 값을 넣어주었다.
이렇게 한 이유는 pop만 해주면 리스트의 길이가 달라지기 때문에 index 에러가 나는 것을 없애주기 위해서이다.
위 작업에서 진도가 100이상일 때 배포가 되게 했기 때문에 result값을 1씩 올려주어서 배포된 수를 세었다.
이제 첫 번째 if문으로 돌아가보면 progresses[0] == 0이면 break하게 했다.
왜냐하면 위에서 append를 이용해서 0값을 리스트 안에 넣어주었기 때문이다.
⁂ progresses[0]가 0이라는 것은 배포가 다 완료되어서 모든 값이 0이 되었다는 뜻이다.
마지막 if문에서는 각 배포마다 몇 개의 기능이 배포되는지를 return해주기 위해 result값이 0이상이면 값을 추가했다.
😤 이 문제를 풀면서 좀 더 공부해야겠다고 생각된 부분 😤
1. 리스트에서 pop을 했을 때 해당 값이 사라지게 된다. 이 때 리스트의 길이가 달라지기 때문에 인덱스 오류가 생기게 되는데 이것을 해결하려면 어떤 식으로 해야하는지 공부해야할 것 같다.... 어떻게 하는 게 좋을까...
2. 이보다 더 쉽게 구현하기 위해서 파이썬에 있는 스택/큐와 관련된 모듈에 대해서 더 알아보아야겠다.
'프로그래밍 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 비밀지도 (0) | 2022.06.25 |
---|---|
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT_다트 게임 (0) | 2022.06.18 |
[프로그래머스] 스택/큐_프린터 (0) | 2022.01.13 |
[프로그래머스] 해시_전화번호 목록 (0) | 2022.01.04 |
[프로그래머스] 해시_완주하지 못한 선수 (0) | 2022.01.04 |