[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ด‘๋ฌผ ์บ๊ธฐ(C++)

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

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

๋ฌธ์ œ ์„ค๋ช…

๋งˆ์ธ์€ ๊ณก๊ดญ์ด๋กœ ๊ด‘์‚ฐ์—์„œ ๊ด‘์„์„ ์บ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ธ์€ ๋‹ค์ด์•„๋ชฌ๋“œ ๊ณก๊ดญ์ด, ์ฒ  ๊ณก๊ดญ์ด, ๋Œ ๊ณก๊ดญ์ด๋ฅผ ๊ฐ๊ฐ 0๊ฐœ์—์„œ 5๊ฐœ๊นŒ์ง€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ณก๊ดญ์ด๋กœ ๊ด‘๋ฌผ์„ ์บ˜ ๋•Œ๋Š” ํ”ผ๋กœ๋„๊ฐ€ ์†Œ๋ชจ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ณก๊ดญ์ด๋กœ ๊ด‘๋ฌผ์„ ์บ˜ ๋•Œ์˜ ํ”ผ๋กœ๋„๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒ  ๊ณก๊ดญ์ด๋Š” ๋‹ค์ด์•„๋ชฌ๋“œ๋ฅผ ์บ˜ ๋•Œ ํ”ผ๋กœ๋„ 5๊ฐ€ ์†Œ๋ชจ๋˜๋ฉฐ, ์ฒ ๊ณผ ๋Œ์„ ์บ˜๋•Œ๋Š” ํ”ผ๋กœ๋„๊ฐ€ 1์”ฉ ์†Œ๋ชจ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ณก๊ดญ์ด๋Š” ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด ๊ด‘๋ฌผ 5๊ฐœ๋ฅผ ์บ” ํ›„์—๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งˆ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉด์„œ ์ตœ์†Œํ•œ์˜ ํ”ผ๋กœ๋„๋กœ ๊ด‘๋ฌผ์„ ์บ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณก๊ดญ์ด์ค‘ ์•„๋ฌด๊ฑฐ๋‚˜ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ๊ด‘๋ฌผ์„ ์บก๋‹ˆ๋‹ค.
  • ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ๊ณก๊ดญ์ด๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ด‘๋ฌผ์€ ์ฃผ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ๋งŒ ์บ˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ด‘์‚ฐ์— ์žˆ๋Š” ๋ชจ๋“  ๊ด‘๋ฌผ์„ ์บ๊ฑฐ๋‚˜, ๋” ์‚ฌ์šฉํ•  ๊ณก๊ดญ์ด๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ๊ด‘๋ฌผ์„ ์บก๋‹ˆ๋‹ค.

์ฆ‰, ๊ณก๊ดญ์ด๋ฅผ ํ•˜๋‚˜ ์„ ํƒํ•ด์„œ ๊ด‘๋ฌผ 5๊ฐœ๋ฅผ ์—ฐ์†์œผ๋กœ ์บ๊ณ , ๋‹ค์Œ ๊ณก๊ดญ์ด๋ฅผ ์„ ํƒํ•ด์„œ ๊ด‘๋ฌผ 5๊ฐœ๋ฅผ ์—ฐ์†์œผ๋กœ ์บ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ, ๋” ์‚ฌ์šฉํ•  ๊ณก๊ดญ์ด๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ด‘์‚ฐ์— ์žˆ๋Š” ๋ชจ๋“  ๊ด‘๋ฌผ์„ ์บ˜ ๋•Œ๊นŒ์ง€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ธ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ณก๊ดญ์ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด picks์™€ ๊ด‘๋ฌผ๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด minerals๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋งˆ์ธ์ด ์ž‘์—…์„ ๋๋‚ด๊ธฐ๊นŒ์ง€ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ํ”ผ๋กœ๋„๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • picks๋Š” [dia, iron, stone]๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • 0 ≤ dia, iron, stone ≤ 5
    • dia๋Š” ๋‹ค์ด์•„๋ชฌ๋“œ ๊ณก๊ดญ์ด์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • iron์€ ์ฒ  ๊ณก๊ดญ์ด์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • stone์€ ๋Œ ๊ณก๊ดญ์ด์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ๊ณก๊ดญ์ด๋Š” ์ตœ์†Œ 1๊ฐœ ์ด์ƒ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 5 ≤ minerals์˜ ๊ธธ์ด ≤ 50
    • minerals๋Š” ๋‹ค์Œ 3๊ฐœ์˜ ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • diamond : ๋‹ค์ด์•„๋ชฌ๋“œ
    • iron : ์ฒ 
    • stone : ๋Œ

์ž…์ถœ๋ ฅ ์˜ˆ

picks  minerals  result
[1, 3, 2] ["diamond", "diamond", "diamond", "iron", "iron", "diamond", "iron", "stone"] 12
[0, 1, 1] ["diamond", "diamond", "diamond", "diamond", "diamond", "iron", "iron", "iron", "iron", "iron", "diamond"] 50

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

์ž…์ถœ๋ ฅ ์˜ˆ #1

๋‹ค์ด์•„๋ชฌ๋“œ ๊ณก๊ดญ์ด๋กœ ์•ž์— ๋‹ค์„ฏ ๊ด‘๋ฌผ์„ ์บ๊ณ  ์ฒ  ๊ณก๊ดญ์ด๋กœ ๋‚จ์€ ๋‹ค์ด์•„๋ชฌ๋“œ, ์ฒ , ๋Œ์„ 1๊ฐœ์”ฉ ์บ๋ฉด 12(1 + 1 + 1 + 1+ 1 + 5 + 1 + 1)์˜ ํ”ผ๋กœ๋„๋กœ ์บ˜ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋•Œ๊ฐ€ ์ตœ์†Œ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

์ฒ  ๊ณก๊ดญ์ด๋กœ ๋‹ค์ด์•„๋ชฌ๋“œ 5๊ฐœ๋ฅผ ์บ๊ณ  ๋Œ ๊ณก๊ดญ์ด๊ณ  ์ฒ  5๊ฐœ๋ฅผ ์บ๋ฉด 50์˜ ํ”ผ๋กœ๋„๋กœ ์บ˜ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋•Œ๊ฐ€ ์ตœ์†Œ๊ฐ’์ž…๋‹ˆ๋‹ค.

 

๋‚ด ํ’€์ด

๊ด‘๋ฌผ์„ 5๊ฐœ์”ฉ ๋‚˜๋ˆŒ๋•Œ ๊ณก๊ดญ์ด ๊ฐœ์ˆ˜๋งŒํผ๋งŒ ๋‚˜๋ˆ ์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 8๋ฒˆ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>

using namespace std;

bool comp(pair<int, vector<int>> p1, pair<int, vector<int>> p2)
{
    if(p1.first > p2.first) 
        return true;
    
    return false;
}

int solution(vector<int> picks, vector<string> minerals) {
    int answer = 0;
    int pick_count= 0;
    vector<pair<int, vector<int>>> fatigues(minerals.size()/5+1);
    
    // ๊ณก๊ดญ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค
    for(int p : picks)
        pick_count += p;
    
    // ๊ณก๊ดญ์ด ๊ฐœ์ˆ˜๋งŒํผ 5๊ฐœ์”ฉ ์งค๋ผ์„œ ์š”๊ตฌ ํ”ผ๋กœ๋„๋ฅผ ๊ตฌํ•œ๋‹ค.
    for(int i = 0; i < minerals.size(); ++i)
    {
        int index = i / 5;
        
        if(index >= pick_count)
            break;
        
        int fatigue = 1;
        
        if(minerals[i] == "diamond")
            fatigue = 25;
        else if(minerals[i] == "iron")
            fatigue = 5;
        
        fatigues[index].first += fatigue;
        fatigues[index].second.push_back(fatigue);
    }
    
    // ์š”๊ตฌ ํ”ผ๋กœ๋„๊ฐ€ ํฐ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ๋‹ค
    sort(fatigues.begin(), fatigues.end(), comp);
    
    for(int i = 0; i < fatigues.size(); ++i)
    {   
        int pick = 25;
        
        // ๊ณก๊ดญ์ด๋ฅผ ๊ณ ๋ฅธ๋‹ค.
        for(int p = 0; p < picks.size(); ++p)
        {
            if(picks[p] > 0)
            {
                picks[p]--;
                break;
            }
            pick /=5;
        }
        
        // ๊ณก๊ดญ์ด์— ๋”ฐ๋ฅธ ํ”ผ๋กœ๋„๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค
        for(int j = 0; j < fatigues[i].second.size(); ++j)
        {
            int fatigue = fatigues[i].second[j] / pick;
            if(fatigue == 0)
                fatigue = 1;
            
            answer += fatigue;
        }
    }
    
    return answer;
}

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ณผ์ œ ์ง„ํ–‰ํ•˜๊ธฐ(C++)  (0) 2023.06.29
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ(C++)  (0) 2023.06.28
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ(C++)  (0) 2023.06.25
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ(C++)  (0) 2023.06.23
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์ž๋ฌผ์‡ ์™€ ์—ด์‡ (C++)  (0) 2023.06.21
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ณผ์ œ ์ง„ํ–‰ํ•˜๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (141)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (135)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (6)
        • ์˜ค๋‹ต๋…ธํŠธ (2)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Beankong_
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ด‘๋ฌผ ์บ๊ธฐ(C++)
์ƒ๋‹จ์œผ๋กœ

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