HIT해
[JS 프로그래머스] 2024 KAKAO_가장 많이 받은 선물 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/258712
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 ) : 내림차순 정렬
'Vue > JavaScript 알고리즘' 카테고리의 다른 글
[JS 백준] 2630.색종이 만들기 (0) | 2024.01.14 |
---|---|
[JS 백준] 1780.종이의 개수 (0) | 2024.01.14 |
[JS 프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.01.11 |
[JS 백준] 2667.단지번호붙이기 (0) | 2024.01.10 |
[JS 백준] 9663. N-Queen (0) | 2024.01.09 |