programmers / level.3 / ๋ฒ ์ŠคํŠธ์•จ๋ฒ”(C++)

2023. 3. 14. 00:38ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/42579

๋ฌธ์ œ ์„ค๋ช…

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

  1. ์†ํ•œ ๋…ธ๋ž˜๊ฐ€ ๋งŽ์ด ์žฌ์ƒ๋œ ์žฅ๋ฅด๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.
  2. ์žฅ๋ฅด ๋‚ด์—์„œ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.
  3. ์žฅ๋ฅด ๋‚ด์—์„œ ์žฌ์ƒ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์€ ๋…ธ๋ž˜ ์ค‘์—์„œ๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋ž˜์˜ ์žฅ๋ฅด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด 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๋ฒˆ ๋…ธ๋ž˜๋Š” ์ˆ˜๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ํ•ด๋‹ต

#include <string>
#include <vector>
#include <map>

using namespace std;

vector<int> solution(vector<string> genres, vector<int> plays) {
    vector<int> answer;
    map<string, int>          m_genres_playtime;  
    map<string, map<int,int>> m_musiclist;   // genre, <index, playtime>
    
    for(int i = 0; i < genres.size(); ++i)
    {
        // ์žฅ๋ฅด๋ณ„ ํ”Œ๋ ˆ์ดํƒ€์ž„ ๊ตฌํ•˜๊ธฐ
        m_genres_playtime[genres[i]] += plays[i];
        
        // ์Œ์•… ๋ฆฌ์ŠคํŠธ ๋งต์— ์Œ์•… ์ •๋ณด ์ถ”๊ฐ€ํ•˜๊ธฐ
        m_musiclist[genres[i]][i] = plays[i];
    }
    
    
    // ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์ƒ๋œ ์žฅ๋ฅด๋ถ€ํ„ฐ ์•จ๋ฒ” ๋…ธ๋ž˜ ๋ฆฌ์ŠคํŠธ ์ฐพ๊ธฐ
    while(!m_genres_playtime.empty())
    {
        // ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์ƒ๋œ ์žฅ๋ฅด ์ฐพ๊ธฐ
        string most_popular_genre;
        int max = 0;
        
        //์žฅ๋ฅด ์ค‘์—์„œ ์ œ์ผ๋†’์€ ๊ฒƒ ์ฐพ๊ธฐ
        for (auto mu : m_genres_playtime)
        {
            if (max < mu.second){
                max = mu.second;
                most_popular_genre = mu.first;
            }
        }
        
        // ์žฅ๋ฅด ๋‚ด์—์„œ ๊ฐ€์žฅ ์žฌ์ƒ ์ˆ˜๊ฐ€ ๋†’์€ ๊ฒŒ์ž„ ์ฐพ๊ธฐ
        for(int i = 0; i < 2; ++i)  // ํ•œ ์žฅ๋ฅด๋‹น ๋…ธ๋ž˜๊ฐ€ ์ตœ๋Œ€ 2๊ณก์ด๋ฏ€๋กœ 2๋ฒˆ ๋ฐ˜๋ณต
        {
            int index = -1;
            int max = 0;
            
            // ์žฅ๋ฅด์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ๊ฐ€ ๋งŽ์€ ๋…ธ๋ž˜ ์ฐพ๊ธฐ
            for (auto mu : m_musiclist[most_popular_genre])
            {
                if (max < mu.second)
                {
                    max = mu.second;
                    index = mu.first;
                }
            } 
            
            // ๋งŒ์•ฝ ๋…ธ๋ž˜๊ฐ€ ์—†๋‹ค๋ฉด break
            if(-1 == index)
                break;
            
            answer.push_back(index);
            m_musiclist[most_popular_genre].erase(index);
        }
        
        m_genres_playtime.erase(most_popular_genre);
    }
    
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ธฐ๋Šฅ๊ฐœ๋ฐœ(C++)  (0) 2023.03.16
programmers / level.1 / ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด(C++)  (0) 2023.03.14
programmers / level.2 / ์œ„์žฅ(C++)  (0) 2023.03.13
programmers / level.1 / ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜(C++)  (0) 2023.02.06
programmers / level.1 / ํฐ์ผ“๋ชฌ(C++)  (0) 2023.02.06
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ธฐ๋Šฅ๊ฐœ๋ฐœ(C++)
  • programmers / level.1 / ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด(C++)
  • programmers / level.2 / ์œ„์žฅ(C++)
  • programmers / level.1 / ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      unrealengine build system
      ํ—ฌํ…Œ์ด์ปค
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      programmers
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      UnrealEngine5
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      unrealengine module
      cpp
      propertyaccess
      UnrealEngine
      OnlineSubsystem
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      ๊ทธ๋ฆฌ๋””(greedy)
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    programmers / level.3 / ๋ฒ ์ŠคํŠธ์•จ๋ฒ”(C++)
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”