[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธ ํ–‰์‚ฌ(C++)

2023. 8. 28. 11:29ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

๋ฌธ์ œ ์„ค๋ช…

์นด์นด์˜คํ†ก์—์„œ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ฌด์ œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž…์ž ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์นด์นด์˜คํ†ก์—์„œ๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธ ํ–‰์‚ฌ๋ฅผ ํ•˜๋Š”๋ฐ, ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž…์ž๋ฅผ ์ตœ๋Œ€ํ•œ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ.
  2. ์ด๋ชจํ‹ฐ์ฝ˜ ํŒ๋งค์•ก์„ ์ตœ๋Œ€ํ•œ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ.

1๋ฒˆ ๋ชฉํ‘œ๊ฐ€ ์šฐ์„ ์ด๋ฉฐ, 2๋ฒˆ ๋ชฉํ‘œ๊ฐ€ ๊ทธ ๋‹ค์Œ์ž…๋‹ˆ๋‹ค.

์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธ ํ–‰์‚ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • n๋ช…์˜ ์นด์นด์˜คํ†ก ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ด๋ชจํ‹ฐ์ฝ˜ m๊ฐœ๋ฅผ ํ• ์ธํ•˜์—ฌ ํŒ๋งคํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ชจํ‹ฐ์ฝ˜๋งˆ๋‹ค ํ• ์ธ์œจ์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ• ์ธ์œจ์€ 10%, 20%, 30%, 40% ์ค‘ ํ•˜๋‚˜๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์นด์นด์˜คํ†ก ์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ค€์„ ๋”ฐ๋ผ ์ด๋ชจํ‹ฐ์ฝ˜์„ ์‚ฌ๊ฑฐ๋‚˜, ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ ์‚ฌ์šฉ์ž๋“ค์€ ์ž์‹ ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ผ์ • ๋น„์œจ ์ด์ƒ ํ• ์ธํ•˜๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ชจ๋‘ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ์‚ฌ์šฉ์ž๋“ค์€ ์ž์‹ ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ์˜ ํ•ฉ์ด ์ผ์ • ๊ฐ€๊ฒฉ ์ด์ƒ์ด ๋œ๋‹ค๋ฉด, ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค๋ฅผ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ 2๋ช…์˜ ์นด์นด์˜คํ†ก ์‚ฌ์šฉ์ž์™€ 2๊ฐœ์˜ ์ด๋ชจํ‹ฐ์ฝ˜์ด ์žˆ์„๋•Œ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž  ๋น„์œจ  ๊ฐ€๊ฒฉ
1 40 10,000
2 25 10,000

 

์ด๋ชจํ‹ฐ์ฝ˜  ๊ฐ€๊ฒฉ
1 7,000
2 9,000

1๋ฒˆ ์‚ฌ์šฉ์ž๋Š” 40%์ด์ƒ ํ• ์ธํ•˜๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ชจ๋‘ ๊ตฌ๋งคํ•˜๊ณ , ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ์ด 10,000์› ์ด์ƒ์ด ๋˜๋ฉด ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค๋ฅผ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

2๋ฒˆ ์‚ฌ์šฉ์ž๋Š” 25%์ด์ƒ ํ• ์ธํ•˜๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ชจ๋‘ ๊ตฌ๋งคํ•˜๊ณ , ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ์ด 10,000์› ์ด์ƒ์ด ๋˜๋ฉด ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค๋ฅผ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

1๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜์˜ ๊ฐ€๊ฒฉ์€ 7,000์›, 2๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜์˜ ๊ฐ€๊ฒฉ์€ 9,000์›์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ, 2๊ฐœ์˜ ์ด๋ชจํ‹ฐ์ฝ˜์„ ๋ชจ๋‘ 40%์”ฉ ํ• ์ธํ•œ๋‹ค๋ฉด, 1๋ฒˆ ์‚ฌ์šฉ์ž์™€ 2๋ฒˆ ์‚ฌ์šฉ์ž ๋ชจ๋‘ 1,2๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜์„ ๊ตฌ๋งคํ•˜๊ฒŒ ๋˜๊ณ , ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž  ๊ตฌ๋งคํ•œ ์ด๋ชจํ‹ฐ์ฝ˜ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž… ์—ฌ๋ถ€
1 1, 2 9,600 X
2 1, 2 9,600 X

์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž…์ž๋Š” 0๋ช…์ด ๋Š˜์–ด๋‚˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํŒ๋งค์•ก์€ 19,200์›์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, 1๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜์„ 30% ํ• ์ธํ•˜๊ณ  2๋ฒˆ ์ด๋ชจํ‹ฐ์ฝ˜์„ 40% ํ• ์ธํ•œ๋‹ค๋ฉด ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

       
์‚ฌ์šฉ์ž  ๊ตฌ๋งคํ•œ ์ด๋ชจํ‹ฐ์ฝ˜  ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž… ์—ฌ๋ถ€
1 2 5,400 X
2 1, 2 10,300 O

2๋ฒˆ ์‚ฌ์šฉ์ž๋Š” ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ์„ 10,000์› ์ด์ƒ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค๋ฅผ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž…์ž๋Š” 1๋ช…์ด ๋Š˜์–ด๋‚˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํŒ๋งค์•ก์€ 5,400์›์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์นด์นด์˜คํ†ก ์‚ฌ์šฉ์ž n๋ช…์˜ ๊ตฌ๋งค ๊ธฐ์ค€์„ ๋‹ด์€ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด users, ์ด๋ชจํ‹ฐ์ฝ˜ m๊ฐœ์˜ ์ •๊ฐ€๋ฅผ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด emoticons๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, ํ–‰์‚ฌ ๋ชฉ์ ์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ๋‹ฌ์„ฑํ–ˆ์„ ๋•Œ์˜ ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž… ์ˆ˜์™€ ์ด๋ชจํ‹ฐ์ฝ˜ ๋งค์ถœ์•ก์„ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๋‚ด ํ’€์ด

DFS๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ๊ธธ์ฐพ๊ธฐ๊ฐ€ ์•„๋‹Œ DFS ๋ฌธ์ œ ํ’€์ด๊ฐ€ ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ์กฐ๊ธˆ ์–ด๋ ค์› ๋‹ค.

#include <string>
#include <vector>
#include <iostream>
using namespace std;

int discount[] = {10, 20, 30, 40};
vector<pair<int, int>> emoticon_price(7, {0 , 0}); // {ํ• ์ธ ๋œ ๊ฐ€๊ฒฉ, ํ• ์ธ๋ฅ }
vector<int> answer = vector<int>(2, 0);

void dfs(int emoticon, int emoticon_count, vector<vector<int>> users, vector<int> emoticons)
{
    if(emoticon < emoticon_count)
    {
        // ํ• ์ธ๋ฅ ์— ๋”ฐ๋ฅธ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ฐ€๊ฒฉ ์ฑ…์ •
        for(int i = 0; i < 4; ++i)
        {
            emoticon_price[emoticon].first =  (100 - discount[i]) * emoticons[emoticon] / 100;
            emoticon_price[emoticon].second = discount[i];
            dfs(emoticon+1, emoticon_count, users, emoticons);
        }
    }
    else
    {
        int subscribe = 0;
        int purchase_prices = 0;
        
        for(int i = 0; i < users.size(); ++i)
        {   
            // ์œ ์ €๊ฐ€ ๊ตฌ์ž…ํ•  ์ด๋ชจํ‹ฐ์ฝ˜๋“ค์˜ ํ• ์ธ ๋œ ๊ฐ’ ๊ตฌํ•˜๊ธฐ
            int total_price = 0;
            for(int j = 0; j < emoticon_count; ++j)
            {
                if(emoticon_price[j].second >= users[i][0])
                    total_price += emoticon_price[j].first;
            }
            
            // ์œ ์ €๊ฐ€ ๊ตฌ๋…ํ• ์ง€ ์ด๋ชจํ‹ฐ์ฝ˜๋“ค์„ ์‚ด์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ
            if(total_price >= users[i][1])
                ++subscribe;
            else
                purchase_prices += total_price;
        }
        
        // ๋งŒ์•ฝ ๊ฐ€์ž…์ž๊ฐ€ ๊ธฐ์กด์˜ ๊ฐ€์ž…์ž ๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด ์ •๋‹ต์œผ๋กœ ๋“ฑ๋กํ•ด๋‘”๋‹ค.
        if(subscribe > answer[0])
        {
            answer[0] = subscribe;
            answer[1] = purchase_prices;
        }
        // ๊ฐ€์ž…์ž ์ˆ˜๋Š” ๊ฐ™์€๋ฐ ๊ตฌ๋งค ๋น„์šฉ์ด ๋” ๋†’๋‹ค๋ฉด ์ •๋‹ต์œผ๋กœ ๋“ฑ๋กํ•ด๋‘”๋‹ค
        else if(subscribe == answer[0])
        {
            if(purchase_prices > answer[1])
                answer[1] = purchase_prices;    
        }
        return;
    }
}

vector<int> solution(vector<vector<int>> users, vector<int> emoticons) 
{
    dfs(0, emoticons.size(), users, emoticons);
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์ˆœ์œ„ (C++)  (0) 2023.09.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ํ•ฉ์Šน ํƒ์‹œ ์š”๊ธˆ (C++)  (0) 2023.09.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉC++)  (0) 2023.08.25
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ด์ง„ํŠธ๋ฆฌ(C++)  (0) 2023.08.22
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.1 - ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„(C++)  (2) 2023.08.10
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์ˆœ์œ„ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ํ•ฉ์Šน ํƒ์‹œ ์š”๊ธˆ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉC++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ด์ง„ํŠธ๋ฆฌ(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
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      programmers
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      OnlineSubsystem
      unrealengine module
      UnrealEngine5
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      propertyaccess
      cpp
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      unrealengine build system
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      ํ—ฌํ…Œ์ด์ปค
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ๊ทธ๋ฆฌ๋””(greedy)
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธ ํ–‰์‚ฌ(C++)
    ์ƒ๋‹จ์œผ๋กœ

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