[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - μ΄μ€‘μš°μ„ μˆœμœ„ν(C++)

2023. 6. 4. 17:16Β·πŸ–₯️ Study Note/Coding Test

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

λ‚΄ ν•΄λ‹΅

λ¬Έμ œμ— 적힌 κ·ΈλŒ€λ‘œ μš°μ„  μˆœμœ„ 큐λ₯Ό 두 개 두어 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€.

μš°μ„  μˆœμœ„ 큐 쀑 ν•˜λ‚˜λŠ” λ‚΄λ¦Όμ°¨μˆœ μš°μ„  μˆœμœ„ 큐둜 μ΅œλŒ“κ°’μ„ μ‚­μ œν•˜κΈ° μœ„ν•œ μš©λ„λ‘œ μ‚¬μš©ν•œλ‹€.

또 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μ˜€λ¦„μ°¨μˆœ μš°μ„  μˆœμœ„ 큐둜 μ΅œμ†Ÿκ°’μ„ μ‚­μ œν•˜κΈ° μœ„ν•œ μš©λ„λ‘œ μ‚¬μš©ν•œλ‹€.

 

μˆ«μžκ°€ μΆ”κ°€λ˜λ©΄ 두 큐에 숫자λ₯Ό μΆ”κ°€ν•œλ‹€.

μ΅œλŒ“κ°’ μ‚­μ œ μ‹œ, λ‚΄λ¦Όμ°¨μˆœ μš°μ„  μˆœμœ„ νμ—μ„œ 숫자λ₯Ό μ‚­μ œν•˜κ³ ,

μ΅œμ†Ÿκ°’ μ‚­μ œ μ‹œ, μ˜€λ¦„μ°¨μˆœ μš°μ„  μˆœμœ„ νμ—μ„œ 숫자λ₯Ό μ‚­μ œν•˜λ©΄ λœλ‹€.

 

μ—¬κΈ°μ„œ μ€‘μš”ν•œ 점은 숫자의 개수λ₯Ό μΉ΄μš΄νŒ…ν•΄μ•Ό ν•œλ‹€λŠ” 것이닀.

두 큐 쀑 ν•˜λ‚˜μ—μ„œλ§Œ 값을 μ‚­μ œν•˜κΈ° λ•Œλ¬Έμ— λͺ¨λ“  μˆ«μžκ°€ μ‚­μ œ λ˜μ–΄λ„ νμ—λŠ” μ—¬μ „νžˆ 값이 λ‚¨μ•„μžˆλ‹€.

κ·ΈλŸ¬λ―€λ‘œ 숫자의 개수λ₯Ό μΉ΄μš΄νŒ…ν•˜λ‹€κ°€ 숫자 μΉ΄μš΄νŠΈκ°€ 0이 되면 λͺ¨λ“  큐λ₯Ό λΉ„μ›Œμ•Ό ν•œλ‹€.

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

using namespace std;

vector<int> solution(vector<string> operations) {
    vector<int> answer(2, 0);
    priority_queue<int, vector<int>> pq_max;          
    priority_queue<int, vector<int>,greater<int>>pq_min;
    int num_count = 0;
    
    for(const auto& s : operations)
    {
        int data = stoi(s.substr(2));
        
        // num_countκ°€ 0이 되면 큐듀을 λΉ„μš΄λ‹€ 
        if(!num_count)
        {
            pq_max = priority_queue<int, vector<int>>();
            pq_min = priority_queue<int, vector<int>, greater<int>>(); 
        }
        
        // 숫자 μ‚½μž…
         if(s[0] == 'I')
         {
             pq_max.push(data);
             pq_min.push(data);
             ++num_count;
         }
        else
        {
            if(!num_count)
                continue;
            
            // μ΅œλŒ“κ°’ μ‚­μ œ
            if(1 == data)
                pq_max.pop();

            // μ΅œμ†Ÿκ°’ μ‚­μ œ
            else
                pq_min.pop();
            
            --num_count;
        }
    }
    
    if(num_count > 0)
    {
        answer[0] = pq_max.top();
        answer[1] = pq_min.top();
    }
    
    
    return answer;
}
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ–₯️ Study Note > Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - 단속 카메라(C++)  (0) 2023.06.06
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.2 - μš”κ²© μ‹œμŠ€ν…œ(C++)  (1) 2023.06.05
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - μ •μˆ˜ μ‚Όκ°ν˜•(C++)  (0) 2023.06.03
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.2 - μŠ€ν‚¬νŠΈλ¦¬(C++)  (0) 2023.06.02
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - μ•Όκ·Ό μ§€μˆ˜(C++)  (0) 2023.06.01
'πŸ–₯️ 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++)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”