HIT해

[JS 프로그래머스] 2024 KAKAO_가장 많이 받은 선물 본문

Vue/JavaScript 알고리즘

[JS 프로그래머스] 2024 KAKAO_가장 많이 받은 선물

힛해 2024. 1. 14. 20:19
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/258712

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

KAKAO 코테문제가 떳다고 해서 가봤다.

 

밧보기로 lv1부터 먹어보려는데

 

이게 뭐라고 처음엔 조금 헷갈렸다.

 

아마 예시로 만들어준 표때문애 괜히 불필요한 배열을 만들다가 헷갈린것 같다,

 

풀이 코드이다.

 

function solution(friends, gifts) {
  let N = friends.length
  

    let exchange = new Array(N);
    let giftpoint = new Array(N).fill(0); // 선물 지수 배열
    let result = new Array(N).fill(0); // 결과값을 담을 배열 
    for(let i = 0; i < N; i++){
        exchange[i] = new Array(N).fill(0); // 주고 받은 선물 배열
    }
  
    for(let i = 0; i < gifts.length; i++){
        let f1 = gifts[i].split(' ')[0];
        let f2 = gifts[i].split(' ')[1];
        let x = undefined;
        let y = undefined;
        for(let j = 0; j < N; j++){
            if(friends[j] === f1){
                x = j; // 준사람
            }else if(friends[j] === f2){
                y = j // 받은 사람
            }
        }
        exchange[x][y]++;
        giftpoint[x]++;
        giftpoint[y]--;
        
    }
    // 주고받은 선물 and 선물 지수 표시 완료
    
    for(let i = 0; i < N ; i++){
        for(let j = 0; j < N; j++){
            if(i ===j){
                continue; // 자기 자신임
            }
            
            if(exchange[i][j] !== exchange[j][i]){ // 주고받은게 다르면
                if(exchange[i][j] > exchange[j][i]){
                    result[i]++; // 받아야하는 선물 +~
                }
            }else{ // 주고 받은 갯수가 같으면 선물지수 비교해야함
                if(giftpoint[i] > giftpoint[j]){
                    result[i]++;
                }
            }
            
            
        }
    }
    
    
    // console.log(exchange);
    // console.log(giftpoint);
    // console.log(result);
    
    result.sort((a,b) =>( b-a));
    // console.log(result[0]);
    return result[0];
    
   
}

 

배운점

배열정렬하는 방법

arr.sort( ( a,b) => a-b )  : 오름차순 정렬

arr.sort( ( a,b) => b-1 )  : 내림차순 정렬