프로그래머스 가장 많이 받은 선물

강인호·2024년 1월 11일
0

알고리즘 문제풀이

목록 보기
35/39
function solution(friends, gifts) {
    var answer = 0;
    // 선물지수 계산
    const object = {}
    const giftScores = friends.map((name)=>{
        let score= 0
        const filter = gifts.forEach(i=>{if(i.split(" ")[0]===name){
            score +=1
        }else if(i.split(" ")[1]===name){
            score -=1
        } })

        return {name ,score }
    })

    let arr =[]
    
    for (let i = 0;i<friends.length;i++){
        
        // 준 사람
        const gifter = friends[i]
        
        let giftScore = 0
        
        for (let j = 0;j<friends.length;j++){
        // 받은 사람
            const receiver = friends[j]
            // 같을 경우 다음 사람으로
            if(gifter===receiver){
                continue
            }
            
            // gifter이나 receiver가 포함되는 리스트(유효성)
            const filter = gifts.filter(item=>item.includes(gifter)||item.includes(receiver))
            
            const giftPoint = filter.filter(item=>item.split(" ")[0]===gifter&&item.split(" ")[1]===receiver).length
            const receivePoint= filter.filter(item=>item.split(" ")[0]===receiver&&item.split(" ")[1]===gifter).length
            
            if(giftPoint>receivePoint){
                giftScore+=1
            }
            // 같을 경우 선물 지수 탐색
            if(giftPoint===receivePoint){
                const findGifter = giftScores.find(item => item.name === gifter).score
                const findReceiver =giftScores.find(item => item.name === receiver).score
                if(findGifter>findReceiver ){
                    giftScore +=1
                }
            }
            
        }
        arr.push(giftScore)
    }
    // 최대값 리턴
    return Math.max(...arr);
}

순차적인 코드를 짰는데 유효성에서 에러가 나서 filter 변수를 추가했더니 통과되었다.

0개의 댓글