프로그래머스 - 기능개발

박상진·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개의 댓글

관련 채용 정보