본문 바로가기
Algorithm

[그리디/Greedy] 백준 1758 알바생 강호 - 파이썬(Python)

by jangThang 2022. 11. 6.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    1758번: 알바생 강호

    첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같

    www.acmicpc.net

     

     

     

    2. 문제 풀이

    팁 + (1 - 순서)

     최대한 많은 팁을 얻어야 합니다. 순서가 늦어질수록 팁이 낮아지며, 음수가 되면 아예 받지 못합니다.

     

    2022.01.26 - [Algorithm] - [Algorithm] 탐욕적인 그리디 알고리즘, 직관적이고 쉬운 문제해결

     

    [Algorithm] 탐욕적인 그리디 알고리즘, 직관적이고 쉬운 문제해결

     경주마들을 자세히 보면, 양쪽 시야를 차단하는 안대를 끼고 있습니다. 이를 '차안대' 라고 합니다. 말의 눈은 양 옆에 달려 있어 시야가 '350도'나 됩니다. 자기 자신 빼곤 다 보이기 때문에, 다

    star7sss.tistory.com

     자본주의대로 풀이하시면 됩니다. 더 많은 팁을 주는 손님부터 받습니다. 그래야 팁 손실을 줄일 수 있습니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    # 입력
    n = int(input())
    tips = []
    for _ in range(n):
        tips.append(int(input()))
    
    # 내림차순 정렬
    tips.sort(reverse=True)
    
    # 팀 많이 주는 사람부터 주문 받기
    res = 0
    for idx, tip in enumerate(tips, 1):
        # 팁이 음수이면 0
        if tip + (1 - idx) < 0:
            pass
        else:
            res += tip + (1 - idx)
    print(res)

     팁을 1만 주려고 했던 사람을 5순위로 미뤄도 1만 손해보게 되지만, 팁을 5만큼 주려고 했던 사람을 5순위로 미루면 5를 손해보게 됩니다.

     따라서 내림차순으로 정렬하고 팁을 받습니다.

     

    star가 되고나서 Tistory

    반응형

    댓글