AvoidFlood

Published at 2021-06-05

class Solution:
    def avoidFlood(self, rains: List[int]) -> List[int]:
        result = []
        sunnyDays = []
        lakeNumLastRainDayPair = dict() #마지막으로 비가온 날 (호수번호/마지막비)
        for today in range(0, len(rains)):
            lakeNum = rains[today]
            #비x
            if lakeNum == 0:
                result.append(1)
                sunnyDays.append(today)
            #비o
            else:
                #비가 온적이 있는 호수인지?
                if lakeNum in lakeNumLastRainDayPair:
                    #비온적있음
                    lastRainDay = lakeNumLastRainDayPair[lakeNum] #마지막으로 비온날짜 가져옴
                    isAvoidable = False
                    for sunnyDay in sunnyDays:
                        if sunnyDay > lastRainDay: #마지마비온날짜보다 뒤에 맑은날있는지
                            isAvoidable = True
                            sunnyDays.remove(sunnyDay)
                            result[sunnyDay] = lakeNum
                            lakeNumLastRainDayPair[lakeNum]=today
                            break
                    if not isAvoidable:
                        return []
                else:
                    #비온적없음
                    lakeNumLastRainDayPair[lakeNum] = today #마지막으로 비온날짜 저장

                result.append(-1)
        return result