본문 바로가기
Algorithm

[구현/수학] 백준 28061 레몬 따기 - 파이썬(Python)

by jangThang 2023. 6. 2.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    28061번: 레몬 따기

    성우는 숲에서 레몬을 따와야 한다. 숲은 하나의 수직선으로 표현할 수 있고, 여기에는 레몬 나무 \(N\)그루가 \(x=1\)부터 \(x=N\)까지 일정한 간격으로 자라 있다. 성우는 현재 \(x=0\)에 있으며, 집은

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     x = 1부터 x = N까지 레몬나무 N그루가 있으며, 각 나무마다의 레몬 개수가 주어집니다. 성우는 딱 1개의 레몬나무에서만 채집할 수 있으며, 채집 후에는 도착지(x = N)까지 1씩 이동할 때마다 1개씩 잃게 됩니다.

     이때, 최대로 채집할 수 있는 레몬의 개수를 구합니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    # 입력
    N = int(input())
    x = list(map(int, input().split()))
    
    # xi - (N-ai) 가 최대인 걸 고른다
    res = 0
    for i, lemon in enumerate(x, 1):
        tmp = lemon - (N+1-i)
        res = max(res, tmp)
    print(res)

     각 지점에서 레몬을 채집했을 때의 기대치를 구한 뒤, 가장 큰 값을 출력하면 됩니다.

     i지점에서 xi개를 채집할 경우, 목적지까지의 남은 거리(N+1-i)만큼 레몬을 잃게 됩니다. 따라서 기댓값은 xi - (N+1-i)  입니다. 각 지점에서의 기댓값을 구하고 가장 큰 값을 출력합니다.

     

    star가 되고나서 Tistory

    반응형

    댓글