Programmers:フルコースを走っていない選手


ソース:https://programmers.co.kr/learn/courses/30/lessons/42576


問題の説明


多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.

せいげんじょうけん

  • マラソンに出場する選手は1人以上10万人以下.
  • 完了長さは参加者長1より小さい.
  • 参加者の名前は20文字を超えない.
  • の参加者には同名の人がいる可能性があります.
  • アイデア

  • 参加者と完了リスト
  • 個のリストから1個を選択し、
  • を比較する
  • その他の場合出力
  • コード#コード#


    Mine

    
    def solution(participant, completion):
        participant.sort()
        completion.sort()
        answer = ''
        
        for i in range(len(completion)):
            if participant[i] != completion[i]:
                answer = participant[i]
                break
        if answer == '':
            answer = participant[-1]        
        return answer

    Answer_1 (collections.counter)

    import collections
    
    
    def solution(participant, completion):
        answer = collections.Counter(participant) - collections.Counter(completion)
        return list(answer.keys())[0]

    Answer_2 (hash)

    def solution(participant, completion):
        answer = ''
        temp = 0
        dic = {}
        for part in participant:
            dic[hash(part)] = part
            temp += int(hash(part))
        for com in completion:
            temp -= hash(com)
        answer = dic[temp]
    
        return answer

    改善


    collection.Counter()


    同じ値に何個のデータがあるかを決定するオブジェクト.

    ソース:https://excelsior-cjh.tistory.com/94