[プログラマー/python]ハッシュ-偽装



🤓 に答える

def solution(clothes):
    answer = {}
    # {'headgear': 2, 'eyewear': 1}
    for i in clothes:
        if i[1] in answer: 
            answer[i[1]] += 1
        else: 
            answer[i[1]] = 1
    cnt = 1
    for i in answer.values():
        cnt *= (i+1)
    return cnt - 1
  • 質問中조합この単語が多いので、ぜひcombinations
  • (i+1):この種の服を着ない場合、(1)増加した服
  • cnt - 1:何も着ていない場合は外して(1)
  • 👩🏻‍🏫 別の解釈

    def solution(clothes):
        from collections import Counter
        from functools import reduce
        # Counter({'headgear': 2, 'eyewear': 1})
        cnt = Counter([kind for name, kind in clothes])
        answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
        return answer

    ▼Python文法


    Counter(~)

  • Python提供collectionsモジュールのCounterクラス
  • 文字列またはリストの要素を計算することにより、ディクソンに多くの順序で戻る
  • from collections import Counter
    
    list = ['kim', 'kim', 'park', 'choi', 'kim', 'kim', 'kim', 'choi', 'park', 'choi']
    result = collections.Counter(list) 
    print(result) # Counter({'kim': 5, 'choi': 3, 'park': 2})
    

    reduce

  • Pythonfunctools内蔵モジュールreduce()関数は主に複数のデータを集計
  • reduce(집계 함수, 순회 가능한 데이터, 초기값)
  • lambda

  • 無名関数
  • メリット:コードを節約したシンプルなメモリ
  • lambda 매개변수 : 표현식
  • from functools import reduce
    result = reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
    print(result) # 10
    韓一平:一時的にプライドが下がったんじゃない?