๐ ๋ฌธ์
์ ๋ฌผ์ ์ง์ ์ ํ๊ธฐ ํ๋ค ๋ ์นด์นด์คํก ์ ๋ฌผํ๊ธฐ ๊ธฐ๋ฅ์ ์ด์ฉํด ์ถํ ์ ๋ฌผ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ๋น์ ์ ์น๊ตฌ๋ค์ด ์ด๋ฒ ๋ฌ๊น์ง ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ๋ค์ ๋ฌ์ ๋๊ฐ ์ ๋ฌผ์ ๋ง์ด ๋ฐ์์ง ์์ธกํ๋ ค๊ณ ํฉ๋๋ค.
๋ ์ฌ๋์ด ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ธฐ๋ก์ด ์๋ค๋ฉด, ์ด๋ฒ ๋ฌ๊น์ง ๋ ์ฌ๋ ์ฌ์ด์ ๋ ๋ง์ ์ ๋ฌผ์ ์ค ์ฌ๋์ด ๋ค์ ๋ฌ์ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด A๊ฐ B์๊ฒ ์ ๋ฌผ์ 5๋ฒ ์คฌ๊ณ , B๊ฐ A์๊ฒ ์ ๋ฌผ์ 3๋ฒ ์คฌ๋ค๋ฉด ๋ค์ ๋ฌ์ A๊ฐ B์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
๋ ์ฌ๋์ด ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ธฐ๋ก์ด ํ๋๋ ์๊ฑฐ๋ ์ฃผ๊ณ ๋ฐ์ ์๊ฐ ๊ฐ๋ค๋ฉด, ์ ๋ฌผ ์ง์๊ฐ ๋ ํฐ ์ฌ๋์ด ์ ๋ฌผ ์ง์๊ฐ ๋ ์์ ์ฌ๋์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
์ ๋ฌผ ์ง์๋ ์ด๋ฒ ๋ฌ๊น์ง ์์ ์ด ์น๊ตฌ๋ค์๊ฒ ์ค ์ ๋ฌผ์ ์์์ ๋ฐ์ ์ ๋ฌผ์ ์๋ฅผ ๋บ ๊ฐ์
๋๋ค.
์๋ฅผ ๋ค์ด A๊ฐ ์น๊ตฌ๋ค์๊ฒ ์ค ์ ๋ฌผ์ด 3๊ฐ๊ณ ๋ฐ์ ์ ๋ฌผ์ด 10๊ฐ๋ผ๋ฉด A์ ์ ๋ฌผ ์ง์๋ -7์
๋๋ค. B๊ฐ ์น๊ตฌ๋ค์๊ฒ ์ค ์ ๋ฌผ์ด 3๊ฐ๊ณ ๋ฐ์ ์ ๋ฌผ์ด 2๊ฐ๋ผ๋ฉด B์ ์ ๋ฌผ ์ง์๋ 1์
๋๋ค. ๋ง์ฝ A์ B๊ฐ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ์ ์ด ์๊ฑฐ๋ ์ ํํ ๊ฐ์ ์๋ก ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์๋ค๋ฉด, ๋ค์ ๋ฌ์ B๊ฐ A์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
๋ง์ฝ ๋ ์ฌ๋์ ์ ๋ฌผ ์ง์๋ ๊ฐ๋ค๋ฉด ๋ค์ ๋ฌ์ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์ต๋๋ค.
์์์ ์ค๋ช
ํ ๊ท์น๋๋ก ๋ค์ ๋ฌ์ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๋, ๋น์ ์ ์ ๋ฌผ์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์น๊ตฌ๊ฐ ๋ฐ์ ์ ๋ฌผ์ ์๋ฅผ ์๊ณ ์ถ์ต๋๋ค.
์น๊ตฌ๋ค์ ์ด๋ฆ์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด friends ์ด๋ฒ ๋ฌ๊น์ง ์น๊ตฌ๋ค์ด ์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ ๊ธฐ๋ก์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด gifts๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋, ๋ค์๋ฌ์ ๊ฐ์ฅ ๋ง์ ์ ๋ฌผ์ ๋ฐ๋ ์น๊ตฌ๊ฐ ๋ฐ์ ์ ๋ฌผ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๐ ์ ํ์ฌํญ
- 2 ≤ friends์ ๊ธธ์ด = ์น๊ตฌ๋ค์ ์ ≤ 50
- friends์ ์์๋ ์น๊ตฌ์ ์ด๋ฆ์ ์๋ฏธํ๋ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด๊ฐ 10 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- ์ด๋ฆ์ด ๊ฐ์ ์น๊ตฌ๋ ์์ต๋๋ค.
- 1 ≤ gifts์ ๊ธธ์ด ≤ 10,000
- gifts์ ์์๋ "A B"ํํ์ ๋ฌธ์์ด์ ๋๋ค.
- A๋ ์ ๋ฌผ์ ์ค ์น๊ตฌ์ ์ด๋ฆ์ B๋ ์ ๋ฌผ์ ๋ฐ์ ์น๊ตฌ์ ์ด๋ฆ์ ์๋ฏธํ๋ฉฐ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- A์ B๋ friends์ ์์์ด๋ฉฐ A์ B๊ฐ ๊ฐ์ ์ด๋ฆ์ธ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง ์์ต๋๋ค.
๐ ์ ์ถ๋ ฅ ์
friends gifts result
["muzi", "ryan", "frodo", "neo"] ["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"] 2
["joy", "brad", "alessandro", "conan", "david"] ["alessandro brad", "alessandro joy", "alessandro conan", "david alessandro", "alessandro david"] 4
["a", "b", "c"] ["a b", "b a", "c a", "a c", "a c", "c a"] 0
๐ ์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ๊ณผ ์ ๋ฌผ ์ง์๋ฅผ ํ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
↓์ค ์ฌ๋ \ ๋ฐ์ ์ฌ๋→ muzi ryan frodo neo
muzi - 0 2 0
ryan 3 - 0 0
frodo 1 1 - 0
neo 1 0 0 -
์ด๋ฆ ์ค ์ ๋ฌผ ๋ฐ์ ์ ๋ฌผ ์ ๋ฌผ ์ง์
muzi 2 5 -3
ryan 3 1 2
frodo 2 2 0
neo 1 0 1
muzi๋ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ frodo์๊ฒ์ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
ryan์ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ muzi์๊ฒ์ ์ ๋ฌผ์ ํ๋ ๋ฐ๊ณ , ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์๋ neo๋ณด๋ค ์ ๋ฌผ ์ง์๊ฐ ์ปค ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
frodo๋ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ ryan์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
neo๋ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ muzi์๊ฒ์ ์ ๋ฌผ์ ํ๋ ๋ฐ๊ณ , ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์๋ frodo๋ณด๋ค ์ ๋ฌผ ์ง์๊ฐ ์ปค ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
๋ค์๋ฌ์ ๊ฐ์ฅ ์ ๋ฌผ์ ๋ง์ด ๋ฐ๋ ์ฌ๋์ ryan๊ณผ neo์ด๊ณ 2๊ฐ์ ์ ๋ฌผ์ ๋ฐ์ต๋๋ค. ๋ฐ๋ผ์ 2๋ฅผ return ํด์ผ ํฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ๊ณผ ์ ๋ฌผ ์ง์๋ฅผ ํ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
↓์ค ์ฌ๋ \ ๋ฐ์ ์ฌ๋→ joy brad alessandro conan david
joy - 0 0 0 0
brad 0 - 0 0 0
alessandro 1 1 - 1 1
conan 0 0 0 - 0
david 0 0 1 0 -
์ด๋ฆ ์ค ์ ๋ฌผ ๋ฐ์ ์ ๋ฌผ ์ ๋ฌผ ์ง์
joy 0 1 -1
brad 0 1 -1
alessandro 4 1 3
conan 0 1 -1
david 1 1 0
alessandro๊ฐ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ joy, brad, conan์๊ฒ์ ์ ๋ฌผ์ 3๊ฐ ๋ฐ์ต๋๋ค. ์ ๋ฌผ์ ํ๋์ฉ ์ฃผ๊ณ ๋ฐ์ david๋ณด๋ค ์ ๋ฌผ ์ง์๊ฐ ์ปค ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
david๋ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์๋ joy, brad, conan๋ณด๋ค ์ ๋ฌผ ์ง์๊ฐ ์ปค ๋ค์ ๋ฌ์ ์ ๋ฌผ์ 3๊ฐ ๋ฐ์ต๋๋ค.
joy, brad, conan์ ์ ๋ฌผ์ ๋ฐ์ง ๋ชปํฉ๋๋ค.
๋ค์๋ฌ์ ๊ฐ์ฅ ์ ๋ฌผ์ ๋ง์ด ๋ฐ๋ ์ฌ๋์ alessandro์ด๊ณ 4๊ฐ์ ์ ๋ฌผ์ ๋ฐ์ต๋๋ค. ๋ฐ๋ผ์ 4๋ฅผ return ํด์ผ ํฉ๋๋ค.
์
์ถ๋ ฅ ์ #3
a์ b, a์ c, b์ c ์ฌ์ด์ ์๋ก ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ์๋ ๊ฐ๊ณ ์ธ ์ฌ๋์ ์ ๋ฌผ ์ง์๋ 0์ผ๋ก ๊ฐ์ ๋ค์ ๋ฌ์ ์๋ฌด๋ ์ ๋ฌผ์ ๋ฐ์ง ๋ชปํฉ๋๋ค. ๋ฐ๋ผ์ 0์ return ํด์ผ ํฉ๋๋ค.
๐ง ํ์ด
function solution(friends, gifts) {
// ์ด๋ฆ ๊ด๋ จ ์ธ๋ฑ์ค
let FI = {};
// ์ ๋ฌผ ์ง์
let GI = new Array(friends.length).fill(0);
// ์ ๋ฌผ ๊ตํ 2์ฐจ์ ๋ฐฐ์ด
let PT = new Array(friends.length).fill().map(() => new Array(friends.length).fill(0));
// ๋ค์ ๋ฌ ์ ๋ฌผ ๋ฐ๋ ์ฌ๋
let answer = new Array(friends.length).fill(0);
// ์น๊ตฌ๋ค ์ธ๋ฑ์ค ํ ๋น
friends.forEach((el, i) => FI[el] = i);
console.log(FI);
for (let e of gifts) {
let temp = e.split(" ");
// ์ ๋ฌผ ์ง์ ์ธก์
GI[FI[temp[0]]] += 1;
GI[FI[temp[1]]] -= 1;
// ์ ๋ฌผ ๊ตํ
PT[FI[temp[0]]][FI[temp[1]]] += 1;
}
console.log(GI);
console.log(PT);
for (let i = 0; i < friends.length; i++) {
for (let j = i + 1; j < friends.length; j++) {
if (PT[i][j] !== 0 || PT[j][i] !== 0) {
if (PT[i][j] !== PT[j][i]) {
if (PT[i][j] > PT[j][i]) {
answer[i] += 1;
} else {
answer[j] += 1;
}
} else if (PT[i][j] === PT[j][i]) {
if (GI[i] > GI[j]) {
answer[i] += 1;
} else if (GI[j] > GI[i]) {
answer[j] += 1;
}
}
} else {
if (GI[i] > GI[j]) {
answer[i] += 1;
} else if (GI[j] > GI[i]) {
answer[j] += 1;
}
}
}
}
console.log(answer);
return Math.max(...answer);
}
๐ก ์๊ฒ ๋ ์
- new Array(๊ธธ์ด).fill(0)์ ํตํด, ๊ธธ์ด๋งํผ 0์ผ๋ก ๊ฐ๋์ฐฌ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค.
- new Array(๊ธธ์ด.fill().map(() => new Array(๊ธธ์ด).fill(0))์ ํตํด ๊ธธ์ด x ๊ธธ์ด๋งํผ์ 0์ผ๋ก ๊ฐ๋์ฐฌ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค.
- for of๋ฅผ ํตํด, ๋ฐฐ์ด์ ๊ฐ ์์์ ๊ดํ ๋ฐ๋ณต๋ฌธ์ ์ํํ ์ ์๋ค.
- for in์ ๋ณดํต ๊ฐ์ฒด์ ๊ฐ ์์๋ฅผ ๋ฐ๋ณตํ ๋ ์ฌ์ฉํ๋ค.
- ์ค๋ณต ํ์์ ํผํ๊ธฐ ์ํด, ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ํํ ๋, j์ ๊ฒฝ์ฐ, i + 1๋ถํฐ ์์ํ๋๋ก ํ๋ค.
- Math.max() ํจ์ ์์์๋ ...answer๊ณผ ๊ฐ์ด, ๊ตฌ์กฐ ๋ถํด ํ ๋นํ์ฌ, ๋ฐฐ์ด ๊ฐ๋ค์ ๋ฃ์ ์ ์๋๋ก ํ๋ค.
- ๊ตฌํ์ ์ด๋ ต๋ค... ใ ใ