๐ŸŒ  ๋ฌธ์ œ

์„ ๋ฌผ์„ ์ง์ ‘ ์ „ํ•˜๊ธฐ ํž˜๋“ค ๋•Œ ์นด์นด์˜คํ†ก ์„ ๋ฌผํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์ถ•ํ•˜ ์„ ๋ฌผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์นœ๊ตฌ๋“ค์ด ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ ๋‹ฌ์— ๋ˆ„๊ฐ€ ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›์„์ง€ ์˜ˆ์ธกํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด, ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ๋‘ ์‚ฌ๋žŒ ์‚ฌ์ด์— ๋” ๋งŽ์€ ์„ ๋ฌผ์„ ์ค€ ์‚ฌ๋žŒ์ด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 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๊ณผ ๊ฐ™์ด, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹นํ•˜์—ฌ, ๋ฐฐ์—ด ๊ฐ’๋“ค์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ๊ตฌํ˜„์€ ์–ด๋ ต๋‹ค... ใ…œใ…œ

 

+ Recent posts