[プログラマー]ユニホーム


質問する


リンク


に答える


  • reserveリストの各値で、-1と+1の値がlossにあるかどうかをナビゲートします.

  • 値がlossの場合、lossリストの対応する値を削除します.

  • ない場合はreserveの次の値を使用します.

  • reserveとlossは繰り返すことができない/また、学生が余分な運動服(lossとreserveに重複値がある)を持ってきた場合、その学生は運動服を借りることができない->重複値を取り除く!

  • 左(-1)から探索を開始します.->余分な運動服が残らないように、お金から探してこそ、運動服を他の人に貸すことができると思います.
  • コード#コード#

    def solution(n, lost, reserve):
        set_reserve = set(reserve) - set(lost)
        set_lost = set(lost) - set(reserve)
    
        for i in set_reserve:
            if i - 1 in set_lost:
                set_lost.remove(i - 1)
            elif i + 1 in set_lost:
                set_lost.remove(i + 1)
    
        return n - len(set_lost)
    
    print(solution(5, [2, 4], [1, 3, 5]))
    print(solution(5, [2, 4], [3]))
    print(solution(3, [3], [1]))