본문 바로가기
HackerRank

Greedy Florist

by 스빠시빠 2019. 5. 12.
def getMinimumCost(k, c):
    total = 0
    counter = 0
    length = len(c)
    c.sort(reverse=True)

    for i in range(0, length):
        total += (counter + 1) * c[i]
        if length != k and (i + 1) % k == 0:
            counter += 1

    return total

 

탐욕 알고리즘 문제는 복잡한 문제는 안나온다. 항상 제일 높은, 비싼 비용을 먼저 선택하는 방식으로 구현하기 때문이다.

 

이 문제는 로직은 잘 만들었는데 반복문을 돌 때 역순, i의 초기값을 길이-1로 시작했다가 계속 테스트 케이스를 통과를 못해서 오류를 찾는데 한참이나 걸렸다.

간단하게 k 값이 2이고 길이가 10이면, 2명이 지나고 나서 카운트가 올라야 하는데 1명이 지나고 바로 카운트가 바뀌게 되는 오류가 생기게 된다.

 

다시 한번 느끼는 루프 불변성의 중요성

 

'HackerRank' 카테고리의 다른 글

Max Array Sum  (0) 2019.09.06
Triple sum  (0) 2019.05.12
Special Palindrome Again  (0) 2019.05.12
Sherlock and the Valid String  (0) 2019.05.11
Frequency Queries  (0) 2019.05.11

댓글