본문 바로가기
알고리즘/프로그래머스

기능개발 - level2

by 매화of사군자 2021. 7. 21.

문제를 읽은 후 생각

- 100에서 progresses의 값을 뺀 후 그 값을 각 speed 값으로 나눈 후 올림값을 얻는다.

- 이 값이 배포까지 걸리는 일 수가 된다.

- 앞에서부터 비교하면서 뒤의 값이 현재값보다 작다면 같이 배포할 수 있단 뜻이므로 이 점을 고려하여 정답을 도출한다.

 

코드

더보기

def solution(progresses, speeds):
    answer = []

    array = []
    for num, speed in zip(progresses, speeds):
        tmp = 100 - num
        array.append(int((tmp / speed) + 0.9))

    cnt = 0
    while array:
        a = array.pop(0)
        cnt = 1
        if array:
            while array and a >= array[0]:
                array.pop(0)
                cnt += 1
        answer.append(cnt)

    return answer

 

고찰

- 문제를 풀긴 했지만 코드가 너무 더럽다고 생각한다. 또한 알고리즘 공부가 아니라 그냥 구현?문제를 푼 것 같아서 다른 사람의 풀이를 볼 필요가 있다고 생각한다.

 

 

다른 분 코드

def solution(progresses, speeds):
    answer = []
    time = 0
    count = 0
    while len(progresses) > 0:
        if (progresses[0] + time * speeds[0]) >= 100:
            progresses.pop(0)
            speeds.pop(0)
            count += 1
        else:
            if count > 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)
    return answer

이렇게 작성하는 것이 다른 사람이 보기에도 편하고 자신이 보기에도 편하고 좋은 것 같다.

'알고리즘 > 프로그래머스' 카테고리의 다른 글

더 맵게 level2  (0) 2021.07.24
오픈채팅방 level2  (0) 2021.07.23
짝지어 제거하기  (0) 2021.07.20
[1차] 다트 게임 (파이썬)  (0) 2021.07.14
숫자 문자열과 영단어 (파이썬)  (0) 2021.07.13

댓글