1일 1PS 48일차!

📚 문제


Level 1

  • 조건 확인만 잘하고 구현만 잘하면 되는 문제

💡 풀이 과정


  • N * N gift_score[][]행렬을 생성한다.
    • gift_score[giveIndex][takeIndex] 로 주고받은 선물과 선물 지수를 표로 나타낸다.
  • total_score[] 에 총 선물 지수를 담아낸다.
  • gift_score[][] 를 돌면서 주고받은 기록이 없거나 같은 수라면 선물 지수에 따라 선물을 주고 받는다.
    • 선물을 주고 받았다면 더 많은 선물을 준 사람이 선물을 받는다.

📌포인트


💻 코드



def solution(friends, gifts):
    n = len(friends)
    gift_score = [[0 for _ in range(n)] for _ in range(n)]

    for gift in gifts:
        give, take = gift.split(" ")
        giveIndex = takeIndex = -1

        for index, f in enumerate(friends):
            if f == give:
                giveIndex = index
                break

        for index, f in enumerate(friends):
            if f == take:
                takeIndex = index
                break

        gift_score[giveIndex][takeIndex] += 1
        gift_score[takeIndex][giveIndex] -= 1

    total_score = [0] * n
    total_gift = [0] * n
    for i in range(n):
        total_score[i] = sum(gift_score[i])


    for i, fr in enumerate(gift_score):
        for index, el in enumerate(fr):
            if i == index:
                continue
            if el > 0:
                total_gift[i] += 1
            elif el == 0:
                if total_score[i] > total_score[index]:
                    total_gift[i] += 1

    print(gift_score)
    print(total_score)
    print(total_gift)
    return max(total_gift)

업데이트:

댓글남기기