프로그래머스 # stack & queue - 기능개발

🏆 해결

걸린시간 : 25분
문제 난이도 : 하
주석 : 코드를 짜고 한 번에 통과가 돼서 신기했다.
역시 코드를 짜기 전에 코드 검증시간이 길어야 한다.

📌 문제

progress = [90,95,98,1]
speeds = [1,5,1,99]

이런식으로 progress 와 speeds 배열이 주어진다.

각 speeds는 각 progress가 진행되는 속도를 의미한다.

100이 되면 해당 progress가 완료되는 것인데, 순서상 뒤의 것은 앞의 것이 완료될 때까지 배포되지 못한다.

위의 예에서는 return value가

[2,2]

가 나와야 한다.

🔥 아이디어

progress에 speeds를 각 loop마다 더한다.

해당 index가 100이 될 경우,

뒤에 100이 넘는 애들의 숫자를 세주고, 100이 안되는 놈으로 이동해준다.
만약 index가 loop의 길이를 넘는 경우 멈춘다.

🎅 TIP

  1. 전체 풀이에 대한 생각을 하고, 꽉 잡고 있는다.
    (이 때, 예시와 귀납법을 적절히 사용한다)
  2. 시각화 한다.
  3. sudo code로 검증한다.
    ( loop는 어떻게 돌 것인지, 1,2번에 해당하는 풀이로 적절히 가고 있는지 등 )
  4. 구현한다.

📋 코드

# 21.07.18

def solution(progresses, speeds):
    index = 0
    length = len(progresses)

    result = []

    while index<length:
        count = 1

        for i in range(length):
            progresses[i] += speeds[i]

        if progresses[index] >=100:
            index +=1
            while index<length and progresses[index]>=100:
                index+=1
                count+=1

            result.append(count)
    return result


solution([95, 90, 99, 99, 80, 99],[1, 1, 1, 1, 1, 1])

좋은 웹페이지 즐겨찾기