프로그래머스 - 기능개발

박상진·2022년 1월 27일
0

프로그래머스

목록 보기
48/65
post-thumbnail

자세한 설명은 링크 참고

개발 속도에 따라서 기능을 배포한다. 그러나 앞에 기능이 먼저 발표되어야 하기 때문에 앞 기능보다 먼저 개발된 기능은 앞 기능이 완성될때까지 기다린 후 함께 배포된다. 이때 발표된 기능의 갯수를 리턴하는 문제이다.

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인지부터 확인했어야 했다.
첫번째 문제로 인해 코드 실행시 인덱스 오류가 발생했었고, 한참 헤메었다.
논리구조를 항상 생각해야겠다.

profile
개발자가 되고싶당

0개의 댓글