์ž‘์„ฑ: 2024-11-27 06:30:34
    ์ˆ˜์ •: 2024-11-27 06:30:34

    ๋ฒ ์ŠคํŠธ์—˜๋ฒ”

    2024-06-24

    ๋ฌธ์ œ ์„ค๋ช…

    ์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฌ์ดํŠธ์—์„œ ์žฅ๋ฅด ๋ณ„๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ๋‘ ๊ฐœ์”ฉ ๋ชจ์•„ ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์„ ์ถœ์‹œํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ž˜๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉฐ, ๋…ธ๋ž˜๋ฅผ ์ˆ˜๋กํ•˜๋Š” ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ์†ํ•œ ๋…ธ๋ž˜๊ฐ€ ๋งŽ์ด ์žฌ์ƒ๋œ ์žฅ๋ฅด๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค. ์žฅ๋ฅด ๋‚ด์—์„œ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค. ์žฅ๋ฅด ๋‚ด์—์„œ ์žฌ์ƒ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์€ ๋…ธ๋ž˜ ์ค‘์—์„œ๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ž˜์˜ ์žฅ๋ฅด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด genres์™€ ๋…ธ๋ž˜๋ณ„ ์žฌ์ƒ ํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด plays๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์— ๋“ค์–ด๊ฐˆ ๋…ธ๋ž˜์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

    ์ œํ•œ์‚ฌํ•ญ

    genres[i]๋Š” ๊ณ ์œ ๋ฒˆํ˜ธ๊ฐ€ i์ธ ๋…ธ๋ž˜์˜ ์žฅ๋ฅด์ž…๋‹ˆ๋‹ค. plays[i]๋Š” ๊ณ ์œ ๋ฒˆํ˜ธ๊ฐ€ i์ธ ๋…ธ๋ž˜๊ฐ€ ์žฌ์ƒ๋œ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. genres์™€ plays์˜ ๊ธธ์ด๋Š” ๊ฐ™์œผ๋ฉฐ, ์ด๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค. ์žฅ๋ฅด ์ข…๋ฅ˜๋Š” 100๊ฐœ ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค. ์žฅ๋ฅด์— ์†ํ•œ ๊ณก์ด ํ•˜๋‚˜๋ผ๋ฉด, ํ•˜๋‚˜์˜ ๊ณก๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์žฅ๋ฅด๋Š” ์žฌ์ƒ๋œ ํšŸ์ˆ˜๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    ์ž…์ถœ๋ ฅ ์˜ˆ

    genres plays return ["classic", "pop", "classic", "classic", "pop"] [500, 600, 150, 800, 2500] [4, 1, 3, 0]

    ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

    classic ์žฅ๋ฅด๋Š” 1,450ํšŒ ์žฌ์ƒ๋˜์—ˆ์œผ๋ฉฐ, classic ๋…ธ๋ž˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ๊ณ ์œ  ๋ฒˆํ˜ธ 3: 800ํšŒ ์žฌ์ƒ ๊ณ ์œ  ๋ฒˆํ˜ธ 0: 500ํšŒ ์žฌ์ƒ ๊ณ ์œ  ๋ฒˆํ˜ธ 2: 150ํšŒ ์žฌ์ƒ pop ์žฅ๋ฅด๋Š” 3,100ํšŒ ์žฌ์ƒ๋˜์—ˆ์œผ๋ฉฐ, pop ๋…ธ๋ž˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ๊ณ ์œ  ๋ฒˆํ˜ธ 4: 2,500ํšŒ ์žฌ์ƒ ๊ณ ์œ  ๋ฒˆํ˜ธ 1: 600ํšŒ ์žฌ์ƒ ๋”ฐ๋ผ์„œ pop ์žฅ๋ฅด์˜ [4, 1]๋ฒˆ ๋…ธ๋ž˜๋ฅผ ๋จผ์ €, classic ์žฅ๋ฅด์˜ [3, 0]๋ฒˆ ๋…ธ๋ž˜๋ฅผ ๊ทธ๋‹ค์Œ์— ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.

    ์žฅ๋ฅด ๋ณ„๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ์ตœ๋Œ€ ๋‘ ๊ฐœ๊นŒ์ง€ ๋ชจ์•„ ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์„ ์ถœ์‹œํ•˜๋ฏ€๋กœ 2๋ฒˆ ๋…ธ๋ž˜๋Š” ์ˆ˜๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ€ป ๊ณต์ง€ - 2019๋…„ 2์›” 28์ผ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ํ’€์ด

    JavaScript๋กœ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ์žฅ๋ฅด๋ณ„๋กœ ์ด ์žฌ์ƒ ํšŸ์ˆ˜ ๊ณ„์‚ฐ: ๊ฐ ์žฅ๋ฅด๋ณ„๋กœ ์ด ์žฌ์ƒ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ ์žฅ๋ฅด์˜ ์ธ๊ธฐ๋„๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
    2. ์žฅ๋ฅด ๋‚ด ๋…ธ๋ž˜ ์ •๋ ฌ: ๊ฐ ์žฅ๋ฅด ๋‚ด์—์„œ ๋…ธ๋ž˜๋“ค์„ ์žฌ์ƒ ํšŸ์ˆ˜์— ๋”ฐ๋ผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์žฌ์ƒ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    3. ๋ฒ ์ŠคํŠธ ์•จ๋ฒ” ๊ตฌ์„ฑ: ์ธ๊ธฐ๋„๊ฐ€ ๋†’์€ ์žฅ๋ฅด๋ถ€ํ„ฐ ์ตœ๋Œ€ ๋‘ ๊ณก์”ฉ ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์— ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.
    function solution(genres, plays) {
        const genrePlayCount = {};
        const genreSongList = {};
     
        genres.forEach((genre, i) => {
            const play = plays[i];
            if (!genrePlayCount[genre]) {
                genrePlayCount[genre] = 0;
                genreSongList[genre] = [];
            }
            genrePlayCount[genre] += play;
            genreSongList[genre].push([play, i]);
        });
     
        const sortedGenres = Object.keys(genrePlayCount).sort((a, b) => genrePlayCount[b] - genrePlayCount[a]);
     
        const result = [];
        sortedGenres.forEach(genre => {
            const sortedSongs = genreSongList[genre].sort((a, b) => b[0] - a[0] || a[1] - b[1]);
            result.push(...sortedSongs.slice(0, 2).map(song => song[1]));
        });
     
        return result;
    }
    1. genrePlayCount์™€ genreSongList๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๊ฐ ์žฅ๋ฅด๋ณ„ ์ด ์žฌ์ƒ ํšŸ์ˆ˜์™€ ๋…ธ๋ž˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    2. ๊ฐ ๋…ธ๋ž˜์— ๋Œ€ํ•ด genrePlayCount์™€ genreSongList๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    3. ์žฅ๋ฅด๋ฅผ ์ด ์žฌ์ƒ ํšŸ์ˆ˜์— ๋”ฐ๋ผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    4. ๊ฐ ์žฅ๋ฅด ๋‚ด์—์„œ ๋…ธ๋ž˜๋ฅผ ์žฌ์ƒ ํšŸ์ˆ˜์™€ ๊ณ ์œ  ๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ์ •๋ ฌํ•œ ํ›„ ์ตœ๋Œ€ ๋‘ ๊ณก์„ result๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.