728x90
https://school.programmers.co.kr/learn/courses/30/lessons/258712
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(friends,gifts){
let next=Array(friends.length).fill(0)// 다음달에 받을 선물 배열
let psIndex=Array(friends).fill(0)// 선물지수
let graph=Array(friends.length).fill().map(()=>Array(friends.length).fill(0))
for(let i=0;i<gifts.length;i++){
let [giver,receiver]=gifts[i].split(" ")
let giverId=friends.indexOf(giver)
let receiverId=friends.indexOf(receiver)
graph[giverId][receiverId]=graph[giverId][receiverId]+1
}
for(let t=0;t<friends.length;t++){
let gives=0
let get=0
for(let w=0;w<friends.length;w++){
get+=graph[w][t]
gives+=graph[t][w]
}
let diff=gives-get
psIndex[t]=diff // 선물 지수 배열 입력
}
for(let j=0;j<graph.length;j++){
for(let k=j+1;k<graph.length;k++){
if(graph[j][k]===graph[k][j]){
//선물을 주고받은 기록이 없거나 주고받은 수가 같은 경우 => 선물지수로 비교
if(psIndex[j]>psIndex[k]){
next[j]=next[j]+1
}else if(psIndex[j]<psIndex[k]){
next[k]=next[k]+1
}
}else{
//더 많은 선물을 준 사람이 다음달에 하나 받음
if(graph[j][k]>graph[k][j]){
next[j]=next[j]+1
}else{
next[k]=next[k]+1
}
}
}
}
answer=Math.max(...next)//배열 중 최대값 리턴
return answer
}
728x90
'알고리즘' 카테고리의 다른 글
2022 kakao tech internship > 성격 유형 검사하기 (3) | 2024.03.18 |
---|---|
2023 kakao blind recruitment > 개인정보 수집 유효기간 (0) | 2024.03.06 |
2018 KAKAO BLIND RECRUITMENT>[3차]n진수 게임 (0) | 2023.07.11 |
DFS 문제풀이 (1) | 2023.06.08 |
DFS(깊이 우선 탐색) (0) | 2023.06.06 |