위닝 카드(DSA 시리즈)

문제



위닝 카드
카드 게임에서 각 플레이어는 임의의 카드 세트를 받게 됩니다. 플레이어는 자신의 승리 카드 한 장을 테이블에 던지고 가장 높은 카드를 가진 플레이어가 승리합니다.

위닝 카드는 카드 세트에서 한 번만 존재하는 카드이며 가장 높은 카드입니다.

정수 카드 세트의 배열이 주어지면 승리한 플레이어의 카드를 반환합니다. 그러한 카드가 발견되지 않으면 -1을 반환합니다.
  • 예 1:
  • 입력: 카드 = [[5,7,3,9,4,9,8,3,1], [1,2,2,4,4,1], [1,2,3]]
  • 출력: 8
  • 예 2:
  • 입력: 카드 = [[5,5], [2,2]]
  • 출력: -1

  • 해결책


  • 2차원 배열을 반복합니다.
  • 두 번째 루프에서 항목이 해시 세트에 있으면 i의 이전 항목을 삭제합니다. 아니면 해시셋에 추가
  • 가장 높은 숫자에 대한 해시 세트를 통해 루프

  • function winningCard(multiArray) {
        let map = new Set();
        multiArray.forEach(item => {
            for (let i = 0; i < item.length; i++) {
                if (map.has(item[i])) {
                   map.delete(item[i])
                } else map.add(item[i])
            }
        })
    
        if (map.size === 0) return -1;
    
        let highest = 0;
        for (let i of map) {
            if(i > highest) {
                highest = i
            }
        }
    
       return highest;
    }
    


    어쨌든 이 문제를 더 잘 해결할 수 있는 방법이 있다면 댓글에 솔루션을 추가할 수 있습니다. 나는 전문가가 아니다. 소리내어 배우기만 하면 됩니다.

    좋아요, 공유 및 댓글 남기는 것을 잊지 마세요. :)

    좋은 웹페이지 즐겨찾기