코딩문제풀이
[프로그래머스 lv1] 2024 KAKAO WINTER INTERNSHIP 가장 많이 받은 선물
이차원 배열
과 해시테이블
을 이용해서 풀이
function solution(friends, gifts) {
const result = [];
const giftNumber = {};
const friendsIndex = {};
friends.forEach((friend, idx) => {
friendsIndex[friend] = idx;
giftNumber[idx] = [0, 0, 0];
result[idx] = 0;
});
const list = Array.from({ length: friends.length })
.fill()
.map(() => Array(friends.length).fill(0));
gifts.forEach((gift) => {
const [give, take] = gift.split(" ");
list[friendsIndex[give]][friendsIndex[take]]++;
giftNumber[friendsIndex[give]][0]++;
giftNumber[friendsIndex[take]][1]++;
giftNumber[friendsIndex[give]][2] =
giftNumber[friendsIndex[give]][0] - giftNumber[friendsIndex[give]][1];
giftNumber[friendsIndex[take]][2] =
giftNumber[friendsIndex[take]][0] - giftNumber[friendsIndex[take]][1];
});
friends.forEach((friend, idx) => {
for (let i = idx; i < friends.length; i++) {
if (idx === i) continue;
if (list[idx][i] > list[i][idx]) {
result[idx]++;
} else if (list[idx][i] < list[i][idx]) {
result[i]++;
} else {
if (giftNumber[idx][2] > giftNumber[i][2]) {
result[idx]++;
}
if (giftNumber[idx][2] < giftNumber[i][2]) {
result[i]++;
}
}
}
});
return Math.max(...result);
}
[백준 2164번 실버4] 카드2
자바스크립트
로 queue, deque를 이용해서 풀려고 했지만 시간 초과로 실패해서 파이썬 deque 라이브러리
를 이용하여 풀이
from collections import deque
A = int(6)
card = list(range(A,0,-1))
d = deque(card)
while len(d) != 1:
d.pop()
d.appendleft(d.pop())
print(d[0])
[백준 10816번 실버4] 숫자 카드 2
해시 테이블
이용해서 풀이 ({key: value}
)
유사문제 [백준 1920번 실버4] 수찾기 도 코드가 똑같아서 같이 풀이
const fs = require("fs");
const input = fs
.readFileSync("doc.txt")
.toString()
.trim()
.split("\n")
.map((x) => x.replace("\r", ""));
const N = +input[0];
const M = +input[2];
const card = input[1].split(" ");
const quition = input[3].split(" ");
const result = [];
const obj = {};
card.forEach((el) => (obj[el] ? obj[el]++ : (obj[el] = 1)));
quition.forEach((el) => (obj[el] ? result.push(obj[el]) : result.push(0)));
console.log(result.join(" "));
AWS 강의 내용 복습 - [해당글] 프로세스