Algorithm

[프로그래머스] 기능개발

Sehe_e 2023. 8. 29. 23:31

[프로그래머스] 기능개발

 

사용 입출력 예제

progresses = [93, 30, 55]
speeds = [1, 30, 5]
result = [2, 1]

 

 


1)

정확성테스트

더보기
테스트 1 통과 (0.01ms, 10.2MB)
테스트 2 통과 (0.04ms, 10.1MB)
테스트 3 통과 (0.03ms, 10.3MB)
테스트 4 통과 (0.03ms, 10.2MB)
테스트 5 통과 (0.01ms, 10.1MB)
테스트 6 통과 (0.01ms, 10.2MB)
테스트 7 통과 (0.03ms, 10.3MB)
테스트 8 통과 (0.01ms, 10.2MB)
테스트 9 통과 (0.02ms, 10.3MB)
테스트 10 통과 (0.02ms, 10.3MB)
테스트 11 통과 (0.01ms, 10.1MB)
# 1)

def solution(progresses, speeds):
    done = [100 - i for i in progresses]
    done_ = []

    for i, n in enumerate(speeds):
        done_.append(done[i] // n)
        if done[i] % n != 0:
            done_[i] += 1

    count = 1
    oneDay = done_[0]
    answer = []

    for j, i in enumerate(done_):
        if j == 0:
            oneDay = i
        elif oneDay < i:
            oneDay = i
            answer.append(count)
            count = 1
        elif oneDay >= i:
            count += 1

    answer.append(count)

    return answer

 


2) Refactoring

정확성 테스트

더보기
테스트 1 통과 (0.01ms, 10.3MB)
테스트 2 통과 (0.05ms, 10.1MB)
테스트 3 통과 (0.03ms, 10.2MB)
테스트 4 통과 (0.01ms, 10.2MB)
테스트 5 통과 (0.01ms, 10.4MB)
테스트 6 통과 (0.01ms, 10.1MB)
테스트 7 통과 (0.03ms, 10MB)
테스트 8 통과 (0.01ms, 10.2MB)
테스트 9 통과 (0.02ms, 10.3MB)
테스트 10 통과 (0.03ms, 10.2MB)
테스트 11 통과 (0.01ms, 10.3MB)
def solution(progresses, speeds):
    # 1)
    # done = [100 - i for i in progresses]
    # done_ = []

    # for i, n in enumerate(speeds):
    #     done_.append(done[i] // n)
    #     if done[i] % n != 0:
    #         done_[i] += 1
    
    done = []

    for i, n in enumerate(progresses):
        work = 100 - n
        done.append(work // speeds[i])
        if work % speeds[i] != 0:
            done[i] += 1
            
    ...
    
    return answer

 


3) Refactoring

정확성 테스트

더보기
테스트 1 통과 (0.01ms, 10.1MB)
테스트 2 통과 (0.03ms, 10.2MB)
테스트 3 통과 (0.02ms, 10.3MB)
테스트 4 통과 (0.01ms, 10.1MB)
테스트 5 통과 (0.01ms, 10MB)
테스트 6 통과 (0.01ms, 10.1MB)
테스트 7 통과 (0.02ms, 10.2MB)
테스트 8 통과 (0.01ms, 10.3MB)
테스트 9 통과 (0.02ms, 10.1MB)
테스트 10 통과 (0.02ms, 10.2MB)
테스트 11 통과 (0.01ms, 10.2MB)
def solution(progresses, speeds):
    # 2)
    # done = []

    # for i, n in enumerate(progresses):
    #     work = 100 - n
    #     done.append(work // speeds[i])
    #     if work % speeds[i] != 0:
    #         done[i] += 1

    done = []

    for i, n in enumerate(progresses):
        work = 100 - n
        if work % speeds[i] != 0:
            done.append(work // speeds[i] + 1)
        else:
            done.append(work // speeds[i])
            
    ...
    
    return answer

 


4) Refactoring

정확성 테스트

더보기
테스트 1 통과 (0.01ms, 10.2MB)
테스트 2 통과 (0.03ms, 10.2MB)
테스트 3 통과 (0.02ms, 10.1MB)
테스트 4 통과 (0.01ms, 10.1MB)
테스트 5 통과 (0.00ms, 9.96MB)
테스트 6 통과 (0.01ms, 10.3MB)
테스트 7 통과 (0.02ms, 10.1MB)
테스트 8 통과 (0.01ms, 10.2MB)
테스트 9 통과 (0.02ms, 10.1MB)
테스트 10 통과 (0.02ms, 10MB)
테스트 11 통과 (0.00ms, 10MB)
def solution(progresses, speeds):
    answer = []
    count = 1
    done = 0

    for i, n in enumerate(progresses):
        work = 100 - n

        if i == 0:
            if work % speeds[i] != 0:
                done = work // speeds[i] + 1
            else:
                done = work // speeds[i]

        else:
            if work % speeds[i] != 0:
                done_ = work // speeds[i] + 1
            else:
                done_ = work // speeds[i]

            if done < done_:
                done = done_
                answer.append(count)
                count = 1
            elif done >= done_:
                count += 1

    answer.append(count)

    return answer