検索[プログラマー]ランキング(Python Python Python Python Python Python Python Python Python)


👉 连接检索



私のコード(効率がコードを通過していない)

# 2020 KAKAO BLIND RECRUITMENT  순위 검색
from collections import defaultdict
from bisect import bisect_left


def solution(info, query):
    dic = defaultdict(
        lambda: defaultdict(
            lambda: defaultdict(
                lambda: defaultdict(list),
            ),
        ),
    )

    for item in info:
        item = item.split()
        dic[item[0]][item[1]][item[2]][item[3]].append(int(item[4]))

    def score_check(d, q):
        result = 0
        d.sort()
        return len(d) - bisect_left(d, int(q[4]))

    def pc_check(d, q):
        if q[3] == "-":
            result = 0
            for k in d.keys():
                result += score_check(d[k], q)
            return result
        else:
            return score_check(d[q[3]], q)

    def js_check(d, q):
        if q[2] == "-":
            result = 0
            for k in d.keys():
                result += pc_check(d[k], q)
            return result
        else:
            return pc_check(d[q[2]], q)

    def bf_check(d, q):
        if q[1] == "-":
            result = 0
            for k in d.keys():
                result += js_check(d[k], q)
            return result
        else:
            return js_check(d[q[1]], q)

    def language(d, q):
        if q[0] == "-":
            result = 0
            for k in dic.keys():
                result += bf_check(d[k], q)
            return result
        else:
            return bf_check(d[q[0]], q)

    result = []
    for st in query:
        q = st.split(" and ")
        temp = q[-1].split(" ")
        q[-1] = temp[0]
        q.append(temp[1])
        result.append(language(dic, q))

    return result

私のコード(コードを通じて)

# 2020 KAKAO BLIND RECRUITMENT  순위 검색
from collections import defaultdict
from itertools import product
from bisect import bisect_left


def solution(info, query):
    dic = defaultdict(list)

    for item in info:
        item = item.split()
        slot = []
        for i in range(4):
            slot.append({"-", item[i]})
        for i in product(*slot):
            dic["".join(i)].append(int(item[4]))

    for k in dic.keys():
        dic[k].sort()

    result = []
    for q in query:
        q = q.replace(" and ", " ").split(" ")
        score = int(q[-1])
        q = q[:-1]

        t = dic["".join(q)]
        result.append(len(t) - bisect_left(t, score))

    return result

チップ

  • すべての場合、dictionaryにおいて鍵として
  • が保存する.
  • を使用して、ペグコンセプト
  • を使用します.

    👉 おしゃべり


    解き始めたばかりの頃は、完全に構造を作って解きましたが、なんといっても鬼のような部分と構造を経ていたので、タイムアウトだったのかもしれません.