프로그래머스 - 기능개발

오늘의 문제

프로그래머스 기능개발

동일한 크기의 두 개의 리스트를 계산한다. 앞보다 뒤 값이 작으면 카운트 해준다.

풀이 방법

1
2
3
4
5
6
progresses = [93, 30, 55]
speeds = [1, 30, 5]
# return [2, 1]

temp_result = [math.ceil((100 - prog) / sp) for prog, sp in zip(progresses, speeds)]
# return [7, 3, 9]

0번째 인덱스 93퍼센트 진행률의 하루 1퍼센트의 속도를 보인다. 7일 후 프로세스가 완료된다.

이런 식이다. 완료시점(100퍼센트)까지 계산은 쉽다. 남은 진척도를 구하고 스피드를 나눠준 후 , 소숫점은 무조건 올려주면 된다.

여기까진 쏘이지~

1
2
3
4
5
6
7
8
9
10
11
12
answer = 1
retval = list()

for idx in range(1, len(temp_result)):
    if temp_result[idx-1] < temp_result[idx]:
        retval.append(answer)
        answer = 1
    else:
        temp_result[idx] = temp_result[idx-1]
        answer += 1
        
retval.append(answer)

i-1 번째가 i번째보다 크면 결과 리스트에 삽입하고 1로 초기화 해준다.

i-1 번째가 i번째보다 작으면, i-1번째는 그 넘어의 숫자와 비교되어야하기 때문에, i 번째에 넣어주고 answer( count )를 하나 올려주고 for문을 지속한다.

사담

진짜 아쉬웠다… 다 풀었는데… 내가 24시간을 꼬박 샜고… 두통이 엄청 와서 못 푼 거다… 그런거다 ^^