プログラマ第1フェーズ-レポート結果の取得


問題の説明
問題は第一段階にとって少し複雑だ.solution関数は、次のパラメータを受信します.id list、report、kがこれらのパラメータを記述する場合、id listには総ユーザのアイデンティティが含まれます.たとえば、[Muzi]、[Frodo]、[apeach]、[neo]です.Report変数には、[「muzi frodo」、「apeach frodo」、「frodo」、「muzineo」、「apeach muzi」の下の形式の値が含まれ、前のidは申告者であり、後ろは申告者である.そして多くの通報を受けたら当然制裁を受けるでしょう?また、通報者には通報を受けたメールが届きます.この基準はkです.k回以上通報を受けた場合、制裁を受ける.
コード#コード#
answer = [0] * len(id_list)
reported = [0] * len(id_list)
check = [[0 for i in range(len(id_list))] for j in range(len(id_list))]
まず、次の変数を作成します.resultは答えとして返される変数で、reportedは何回アラームを受信したかを示すリストです.checkは、誰が誰に通報したのかを2次元listに知らせるために作成された.
for i in report:
        a, b = i.split()
        A = id_list.index(a)
        B = id_list.index(b)
        if check[A][B] == 0:
            check[A][B] = 1
            reported[B] += 1
次のコードはcheckを使用して、誰の通報を2次元リストに保存しようとします.Reportはsplit()を使用して変数iを受信し、それをスペースに分け、A申告者Bを申告者IDのインデックスとする.checkに保存すると、IDのインデックスに対応するユーザがaに報告するユーザになります.
この変数を使用
for i in range(len(id_list)):
        for j in range(len(id_list)):
            if check[i][j] == 1:   
                if reported[j] >= k:
                    answer[i] += 1             
この人をチェックし、クレームの回数がk回を超える場合は、答えを+=1にします.そうすれば、あの人が何度制裁されたかが分かる.
完全なコードを表示するには、次の手順に従います.
def solution(id_list, report, k):
    answer = [0] * len(id_list)
    reported = [0] * len(id_list)

    check = [[0 for i in range(len(id_list))] for j in range(len(id_list))]
    for i in report:
        a, b = i.split()
        A = id_list.index(a)
        B = id_list.index(b)
        if check[A][B] == 0:
            check[A][B] = 1
            reported[B] += 1

    for i in range(len(id_list)):
        for j in range(len(id_list)):
            if check[i][j] == 1:
                
                if reported[j] >= k:
                    answer[i] += 1

    return answer
困っている人に役に立つことを願っています.読んでくれてありがとう.
質問リンク
https://programmers.co.kr/learn/courses/30/lessons/92334