[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์•ผ๊ทผ ์ง€์ˆ˜(C++)

2023. 6. 1. 11:25ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

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

๋ฌธ์ œ ์„ค๋ช…

ํšŒ์‚ฌ์› Demi๋Š” ๊ฐ€๋”์€ ์•ผ๊ทผ์„ ํ•˜๋Š”๋ฐ์š”, ์•ผ๊ทผ์„ ํ•˜๋ฉด ์•ผ๊ทผ ํ”ผ๋กœ๋„๊ฐ€ ์Œ“์ž…๋‹ˆ๋‹ค. ์•ผ๊ทผ ํ”ผ๋กœ๋„๋Š” ์•ผ๊ทผ์„ ์‹œ์ž‘ํ•œ ์‹œ์ ์—์„œ ๋‚จ์€ ์ผ์˜ ์ž‘์—…๋Ÿ‰์„ ์ œ๊ณฑํ•˜์—ฌ ๋”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. Demi๋Š” N์‹œ๊ฐ„ ๋™์•ˆ ์•ผ๊ทผ ํ”ผ๋กœ๋„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋„๋ก ์ผํ•  ๊ฒ๋‹ˆ๋‹ค.Demi๊ฐ€ 1์‹œ๊ฐ„ ๋™์•ˆ ์ž‘์—…๋Ÿ‰ 1๋งŒํผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, ํ‡ด๊ทผ๊นŒ์ง€ ๋‚จ์€ N ์‹œ๊ฐ„๊ณผ ๊ฐ ์ผ์— ๋Œ€ํ•œ ์ž‘์—…๋Ÿ‰ works์— ๋Œ€ํ•ด ์•ผ๊ทผ ํ”ผ๋กœ๋„๋ฅผ ์ตœ์†Œํ™”ํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • works๋Š” ๊ธธ์ด 1 ์ด์ƒ, 20,000 ์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • works์˜ ์›์†Œ๋Š” 50000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • n์€ 1,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

works  n result
[4, 3, 3] 4 12
[2, 1, 2] 1 6
[1,1] 3 0

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

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

n=4 ์ผ ๋•Œ, ๋‚จ์€ ์ผ์˜ ์ž‘์—…๋Ÿ‰์ด [4, 3, 3] ์ด๋ผ๋ฉด ์•ผ๊ทผ ์ง€์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด 4์‹œ๊ฐ„๋™์•ˆ ์ผ์„ ํ•œ ๊ฒฐ๊ณผ๋Š” [2, 2, 2]์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ ์•ผ๊ทผ ์ง€์ˆ˜๋Š” 22 + 22 + 22 = 12 ์ž…๋‹ˆ๋‹ค.

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

n=1์ผ ๋•Œ, ๋‚จ์€ ์ผ์˜ ์ž‘์—…๋Ÿ‰์ด [2,1,2]๋ผ๋ฉด ์•ผ๊ทผ ์ง€์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด 1์‹œ๊ฐ„๋™์•ˆ ์ผ์„ ํ•œ ๊ฒฐ๊ณผ๋Š” [1,1,2]์ž…๋‹ˆ๋‹ค. ์•ผ๊ทผ์ง€์ˆ˜๋Š” 12 + 12 + 22 = 6์ž…๋‹ˆ๋‹ค.

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

๋‚จ์€ ์ž‘์—…๋Ÿ‰์ด ์—†์œผ๋ฏ€๋กœ ํ”ผ๋กœ๋„๋Š” 0์ž…๋‹ˆ๋‹ค.

๋‚ด ํ•ด๋‹ต

#include <string>
#include <vector>
#include <queue>
#include <iostream>

using namespace std;

long long solution(int n, vector<int> works) {
    long long answer = 0;
    priority_queue<int> q;
    
    // ์šฐ์„  ์ˆœ์œ„ ํ์— ์ž‘์—… ์ถ”๊ฐ€
    for(const auto w:works)
        q.push(w);
    
    // n์‹œ๊ฐ„๋™์•ˆ ์ž‘์—… ๋‹น 1์‹œ๊ฐ„ ์“ฐ๊ธฐ
    while(n > 0)
    {
        if(q.empty())
            break;
        
        int cur = q.top();
        q.pop();
        
        --cur;
        --n;
        
        if(cur > 0)
            q.push(cur);
    
    }
    
    // ์ž‘์—… ๋‹น ๋‚จ์€ ์‹œ๊ฐ„ ์ œ๊ณฑํ•ด์„œ ํ”ผ๋กœ๋„ ๊ตฌํ•˜๊ธฐ
    while(!q.empty())
    {
        int cur = q.top();
        q.pop();
        answer += cur * cur;
    }
    
    
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ •์ˆ˜ ์‚ผ๊ฐํ˜•(C++)  (0) 2023.06.03
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์Šคํ‚ฌํŠธ๋ฆฌ(C++)  (0) 2023.06.02
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ(C++)  (0) 2023.05.31
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๊ทค ๊ณ ๋ฅด๊ธฐ(C++)  (0) 2023.05.30
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋ฌด์ธ๋„ ์—ฌํ–‰(C++)  (0) 2023.05.23
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ •์ˆ˜ ์‚ผ๊ฐํ˜•(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์Šคํ‚ฌํŠธ๋ฆฌ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๊ทค ๊ณ ๋ฅด๊ธฐ(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.3 - ์•ผ๊ทผ ์ง€์ˆ˜(C++)
์ƒ๋‹จ์œผ๋กœ

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