TimeNeededBuyTickets

Published at 2021-12-07

class Solution:
    def timeRequiredToBuy(self, tickets: List[int], k: int) -> int:
        kthTicketCnt = tickets[k]  # k번째 사람이 사려는 티켓 수
        time = kthTicketCnt
        for ticket in tickets[:k]:
            if ticket >= kthTicketCnt:  # k티켓수보다 크면 나머진 빼고 k티켓수만큼만 누적
                time += kthTicketCnt
            else:                       # k티켓수보다 작으면 그 값만큼만 누적
                time += ticket
        for ticket in tickets[k+1:]:
            if ticket >= kthTicketCnt-1:
                time += kthTicketCnt-1
            else:
                time += ticket
        return time

# 한장사면 맨뒤로 가니깐 k만큼은 돌고돌기를 반복한다는 뜻

# 0~k까지는
# k번째 사람이 사려는 티켓 숫자보다 같.작 인 갯수만큼만 카운트하면됨
# k~마지막은
# k번째 사람이 사려느 티켓 숫자보다 작은것만 셈(k번째 사람이 다 사기만하면 뒤에는 볼 필요 없으니까)

# 그러니 k보다 큰지, 같.크인지 나눠서 확인하면됨