상세 컨텐츠

본문 제목

[LeetCode][Python] 2225. Find Players With Zero or One Losses

공부

by 근성 2024. 1. 15. 23:04

본문

https://leetcode.com/problems/find-players-with-zero-or-one-losses/submissions/1146832870/?envType=daily-question&envId=2024-01-15

 

Find Players With Zero or One Losses - LeetCode

Can you solve this real interview question? Find Players With Zero or One Losses - You are given an integer array matches where matches[i] = [winneri, loseri] indicates that the player winneri defeated player loseri in a match. Return a list answer of size

leetcode.com

대진표가 있고, 0패와 1패를 한 사람을 분류하는 문제이다.

 

Example 1:
Input: matches = [[1,3],[2,3],[3,6],[5,6],[5,7],[4,5],[4,8],[4,9],[10,4],[10,9]]
Output: [[1,2,10],[4,5,7,8]]
Explanation:
Players 1, 2, and 10 have not lost any matches.
Players 4, 5, 7, and 8 each have lost one match.
Players 3, 6, and 9 each have lost two matches.
Thus, answer[0] = [1,2,10] and answer[1] = [4,5,7,8].

 

Example 2:
Input: matches = [[2,3],[1,3],[5,4],[6,4]]
Output: [[1,2,5,6],[]]
Explanation:
Players 1, 2, 5, and 6 have not lost any matches.
Players 3 and 4 each have lost two matches.
Thus, answer[0] = [1,2,5,6] and answer[1] = [].


많은 방법들을 생각했지만, 코딩테스트를 공부하면서 hashmap이 떠올랐다.

list에서는 append를 썼지만, hash는 get이다.

get을 통해서 hash를 채운다.

 

        for winner, loser in matches:
            losses_count[winner] = losses_count.get(winner, 0)
            losses_count[loser] = losses_count.get(loser, 0) + 1

 

그 후 해시에 접근하면서,

0패이면 0패 list, 1패이면 1패 list에 값을 append한다.

 

그리고 0패 list, 1패 list 따로 따로 정렬하면, 문제 요구사항 끝.

class Solution:
    def findWinners(self, matches: List[List[int]]) -> List[List[int]]:
        answer = [[], []]
        losses_count = {}

        for winner, loser in matches:
            losses_count[winner] = losses_count.get(winner, 0)
            losses_count[loser] = losses_count.get(loser, 0) + 1
        
        for player, count in losses_count.items():
            if count == 0:
                answer[0].append(player)
            if count == 1:
                answer[1].append(player)
        for i in range(2):
            answer[i].sort()
        return answer

 

hashmap을 쓸지 알고있었지만, 바로바로 접근을 못했다.

이번 문제를 계기로 hash에 접근하는 방법에 익숙해지자.

관련글 더보기

댓글 영역