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