개발 속도에 따라서 기능을 배포한다. 그러나 앞에 기능이 먼저 발표되어야 하기 때문에 앞 기능보다 먼저 개발된 기능은 앞 기능이 완성될때까지 기다린 후 함께 배포된다. 이때 발표된 기능의 갯수를 리턴하는 문제이다.
def solution(progresses, speeds): answer = [] while True : for i in range(len(progresses)) : progresses[i] = progresses[i] + speeds[i] if len(progresses) == 0 : break elif progresses[0] >= 100 : cnt = 0 while True : del progresses[0], speeds[0] cnt += 1 if len(progresses) == 0 or progresses[0] < 100: answer.append(cnt) break else : continue elif progresses[0] < 100 : continue return answer
progresses
의 요소값의 자리에 맞게speeds
의 요소값을 더해주고,
첫번째 요소값이 100 이상이 되는 경우에 삭제해주었다. 이때 다음 요소값이 100 이상일 수 있기 때문에 이 작업을 반복하였다.
결과는
두가지 문제가 있었다. 첫번째는 자리, 두번째는 speeds의 요소값을 삭제하지 않은 경우였다.
while문
안에while문
에서 문제가 발생했었다.while True : del progresses[0] # progresses의 요소만 삭제했었다. cnt += 1 if progresses[0] < 100 or len(progresses) == 0 : # 이 둘의 자리가 바뀌었었다. answer.append(cnt) break else : continue
이게 처음 코드였다. 두번째 문제는 본인의 실수였지만(이부분에서 시간이 꽤 걸려서 큰 실수였다.)
첫번째 문제는 논리상 0번째 요소값을 확인하기 전에 길이가 0인지부터 확인했어야 했다.
첫번째 문제로 인해 코드 실행시 인덱스 오류가 발생했었고, 한참 헤메었다.
논리구조를 항상 생각해야겠다.