[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค (C++)

2023. 9. 26. 13:21ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

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

๋ฌธ์ œ ์„ค๋ช…

๋ฏผํ˜ธ๋Š” ๋‹ค๋‹จ๊ณ„ ์กฐ์ง์„ ์ด์šฉํ•˜์—ฌ ์นซ์†”์„ ํŒ๋งคํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ๋งค์›์ด ์นซ์†”์„ ํŒ๋งคํ•˜๋ฉด ๊ทธ ์ด์ต์ด ํ”ผ๋ผ๋ฏธ๋“œ ์กฐ์ง์„ ํƒ€๊ณ  ์กฐ๊ธˆ์”ฉ ๋ถ„๋ฐฐ๋˜๋Š” ํ˜•ํƒœ์˜ ํŒ๋งค๋ง์ž…๋‹ˆ๋‹ค. ์–ด๋А์ •๋„ ํŒ๋งค๊ฐ€ ์ด๋ฃจ์–ด์ง„ ํ›„, ์กฐ์ง์„ ์šด์˜ํ•˜๋˜ ๋ฏผํ˜ธ๋Š” ์กฐ์ง ๋‚ด ๋ˆ„๊ฐ€ ์–ผ๋งˆ๋งŒํผ์˜ ์ด๋“์„ ๊ฐ€์ ธ๊ฐ”๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฏผํ˜ธ๊ฐ€ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค ์กฐ์ง์ด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค.

๋ฏผํ˜ธ๋Š” center์ด๋ฉฐ, ํŒŒ๋ž€์ƒ‰ ๋„ค๋ชจ๋Š” ์—ฌ๋Ÿ ๋ช…์˜ ํŒ๋งค์›์„ ํ‘œ์‹œํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ์ž์‹ ์„ ์กฐ์ง์— ์ฐธ์—ฌ์‹œํ‚จ ์ถ”์ฒœ์ธ์— ์—ฐ๊ฒฐ๋˜์–ด ํ”ผ๋ผ๋ฏธ๋“œ ์‹์˜ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์ง์˜ ์ด์ต ๋ถ„๋ฐฐ ๊ทœ์น™์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒ๋งค์›์€ ์นซ์†”์˜ ํŒ๋งค์— ์˜ํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์ด์ต์—์„œ 10% ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ž์‹ ์„ ์กฐ์ง์— ์ฐธ์—ฌ์‹œํ‚จ ์ถ”์ฒœ์ธ์—๊ฒŒ ๋ฐฐ๋ถ„ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ž์‹ ์ด ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒ๋งค์›์€ ์ž์‹ ์ด ์นซ์†” ํŒ๋งค์—์„œ ๋ฐœ์ƒํ•œ ์ด์ต ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ž์‹ ์ด ์กฐ์ง์— ์ถ”์ฒœํ•˜์—ฌ ๊ฐ€์ž…์‹œํ‚จ ํŒ๋งค์›์—๊ฒŒ์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด์ต์˜ 10% ๊นŒ์ง€ ์ž์‹ ์— ์ด์ต์ด ๋ฉ๋‹ˆ๋‹ค. ์ž์‹ ์—๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์ด์ต ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ ๊ทœ์น™์œผ๋กœ ์ž์‹ ์˜ ์ถ”์ฒœ์ธ์—๊ฒŒ ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, 10% ๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ์—๋Š” ์› ๋‹จ์œ„์—์„œ ์ ˆ์‚ฌํ•˜๋ฉฐ, 10%๋ฅผ ๊ณ„์‚ฐํ•œ ๊ธˆ์•ก์ด 1 ์› ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ์—๋Š” ์ด๋“์„ ๋ถ„๋ฐฐํ•˜์ง€ ์•Š๊ณ  ์ž์‹ ์ด ๋ชจ๋‘ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ํŒ๋งค ๊ธฐ๋ก์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์นซ์†”์˜ ํŒ๋งค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด์ต์€ ๊ฐœ๋‹น 100 ์›์œผ๋กœ ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ๋งค์› ํŒ๋งค ์ˆ˜๋Ÿ‰ ์ด์ต๊ธˆ

young 12 1,200 ์›
john 4 400 ์›
tod 2 200 ์›
emily 5 500 ์›
mary 10 1,000 ์›

ํŒ๋งค์› young ์— ์˜ํ•˜์—ฌ 1,200 ์›์˜ ์ด์ต์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. young ์€ ์ด ์ค‘ 10% ์— ํ•ด๋‹นํ•˜๋Š” 120 ์›์„, ์ž์‹ ์„ ์กฐ์ง์— ์ฐธ์—ฌ์‹œํ‚จ ์ถ”์ฒœ์ธ์ธ edward ์—๊ฒŒ ๋ฐฐ๋ถ„ํ•˜๊ณ  ์ž์‹ ์€ ๋‚˜๋จธ์ง€์ธ 1,080 ์›์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. edward ๋Š” young ์—๊ฒŒ์„œ ๋ฐ›์€ 120 ์› ์ค‘ 10% ์ธ 12 ์›์„ mary ์—๊ฒŒ ๋ฐฐ๋ถ„ํ•˜๊ณ  ์ž์‹ ์€ ๋‚˜๋จธ์ง€์ธ 108 ์›์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. 12 ์›์„ edward ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ mary ๋Š” 10% ์ธ 1 ์›์„ ์„ผํ„ฐ์— (์ฆ‰, ๋ฏผํ˜ธ์—๊ฒŒ) ๋ฐฐ๋ถ„ํ•˜๊ณ  ์ž์‹ ์€ ๋‚˜๋จธ์ง€์ธ 11 ์›์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ ํ›„, ํŒ๋งค์› john ์— ์˜ํ•˜์—ฌ 400 ์›์˜ ์ด์ต์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. john ์€ 10% ์ธ 40 ์›์„ ์„ผํ„ฐ์— ๋ฐฐ๋ถ„ํ•˜๊ณ  ์ž์‹ ์ด ๋‚˜๋จธ์ง€์ธ 360 ์›์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ ๊ทธ ํ›„์—๋Š” ํŒ๋งค์› tod ์— ์˜ํ•˜์—ฌ 200 ์› ์ด์ต์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ, tod ์ž์‹ ์ด 180 ์›์„, ์ถ”์ฒœ์ธ์ธ jaimie ๊ฐ€ ๊ทธ ์ค‘ 10% ์ธ 20 ์›์„ ๋ฐ›์•„์„œ 18 ์›์„ ๊ฐ€์ง€๊ณ , jaimie ์˜ ์ถ”์ฒœ์ธ์ธ mary ๋Š” 2 ์›์„ ๋ฐ›์ง€๋งŒ ์ด๊ฒƒ์˜ 10% ๋Š” ์› ๋‹จ์œ„์—์„œ ์ ˆ์‚ฌํ•˜๋ฉด ๋ฐฐ๋ถ„ํ•  ๊ธˆ์•ก์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— mary ๋Š” 2 ์›์„ ๋ชจ๋‘ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ์œผ๋กœ emily ๊ฐ€ ์นซ์†” ํŒ๋งค๋ฅผ ํ†ตํ•˜์—ฌ ์–ป์€ ์ด์ต 500 ์›์€ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ ๊ทœ์น™์— ๋”ฐ๋ผ emily ์—๊ฒŒ 450 ์›, mary ์—๊ฒŒ 45 ์›, ๊ทธ๋ฆฌ๊ณ  ์„ผํ„ฐ์— 5 ์›์œผ๋กœ ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ํŒ๋งค์› mary ๋Š” 1,000 ์›์˜ ์ด์ต์„ ๋‹ฌ์„ฑํ•˜๊ณ , ์ด ์ค‘ 10% ์ธ 100 ์›์„ ์„ผํ„ฐ์— ๋ฐฐ๋ถ„ํ•œ ํ›„ ๊ทธ ๋‚˜๋จธ์ง€์ธ 900 ์›์„ ์ž์‹ ์ด ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด ํ•˜์—ฌ ๋ชจ๋“  ์กฐ์ง ๊ตฌ์„ฑ์›๋“ค์˜ ์ด์ต ๋‹ฌ์„ฑ ํ˜„ํ™ฉ ์ง‘๊ณ„๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์–ป์€ ์ด์ต์„ ๋ชจ๋‘ ํ•ฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฐ๊ณผ๊ฐ€ ๋ฏผํ˜ธ๊ฐ€ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ์ด์ต ๋ฐฐ๋ถ„ ํ˜„ํ™ฉ์ž…๋‹ˆ๋‹ค.

๊ฐ ํŒ๋งค์›์˜ ์ด๋ฆ„์„ ๋‹ด์€ ๋ฐฐ์—ด enroll, ๊ฐ ํŒ๋งค์›์„ ๋‹ค๋‹จ๊ณ„ ์กฐ์ง์— ์ฐธ์—ฌ์‹œํ‚จ ๋‹ค๋ฅธ ํŒ๋งค์›์˜ ์ด๋ฆ„์„ ๋‹ด์€ ๋ฐฐ์—ด referral, ํŒ๋งค๋Ÿ‰ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ์˜ ํŒ๋งค์› ์ด๋ฆ„์„ ๋‚˜์—ดํ•œ ๋ฐฐ์—ด seller, ํŒ๋งค๋Ÿ‰ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ์˜ ํŒ๋งค ์ˆ˜๋Ÿ‰์„ ๋‚˜์—ดํ•œ ๋ฐฐ์—ด amount๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ํŒ๋งค์›์ด ๋“ํ•œ ์ด์ต๊ธˆ์„ ๋‚˜์—ดํ•œ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ํŒ๋งค์›์—๊ฒŒ ๋ฐฐ๋ถ„๋œ ์ด์ต๊ธˆ์˜ ์ดํ•ฉ์„ ๊ณ„์‚ฐํ•˜์—ฌ(์ •์ˆ˜ํ˜•์œผ๋กœ), ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ enroll์— ์ด๋ฆ„์ด ํฌํ•จ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‚˜์—ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๋‚ด ํ’€์ด

unordered_map์„ ํ™œ์šฉํ•ด ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ์ˆ˜์ต์„ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ์ด๋‹ค.

#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

unordered_map<string, string> parent;
unordered_map<string, int> result;

void ProfitSharing(string seller, int revenu)
{
    string curSeller = seller;
    int curRevenu = revenu;
    
    while(curSeller != "center"  && curRevenu >= 1.f)
    {
        int tenPercent = curRevenu * 0.1f;
        curRevenu -= tenPercent;

        result[curSeller] += curRevenu;

        curRevenu = tenPercent;
        curSeller = parent[curSeller];
    }
}

vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
    vector<int> answer(enroll.size(), 0);
	 
    for(int i = 0; i < enroll.size(); ++i)
    {
        if(referral[i] == "-")
        {
            parent.insert({enroll[i], "center"});
            continue; 
        }
        
        parent.insert({enroll[i], referral[i]});
        result.insert({enroll[i], 0});
    }
    
    for(int i = 0; i < seller.size(); ++i)
        ProfitSharing(seller[i], amount[i] * 100);
    
    for(int i = 0; i < enroll.size(); ++i)
        answer[i] = result[enroll[i]];   
    
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ถ€๋Œ€๋ณต๊ท€ (C++)  (0) 2023.10.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(C++)  (0) 2023.09.28
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)  (0) 2023.09.22
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++)  (0) 2023.09.21
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ณด์„ ์‡ผํ•‘ (C++)  (0) 2023.09.20
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ถ€๋Œ€๋ณต๊ท€ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++)
Beankong_
Beankong_
๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๊ณต๋ถ€ํ•˜๋Š” ๋ธ”๋กœ๊ทธ
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (131) N
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (128)
        • Unreal Engine (0)
        • Coding Test (123)
        • Design Patteren (5)
      • ๐Ÿงญ Devlog (3) N
        • ์˜ค๋‹ต๋…ธํŠธ (2)
      • ๐Ÿ“šSeries (0)
        • Deep Dive :: Unreal Engine Base & Build (1) N
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Beankong_
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค (C++)
์ƒ๋‹จ์œผ๋กœ

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