[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - λ””νŽœμŠ€ κ²Œμž„(C++)

2023. 8. 7. 12:25Β·πŸ–₯️ Study Note/Coding Test

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

문제 μ„€λͺ…

μ€€ν˜ΈλŠ” μš”μ¦˜ λ””νŽœμŠ€ κ²Œμž„μ— ν‘Ή λΉ μ Έ μžˆμŠ΅λ‹ˆλ‹€. λ””νŽœμŠ€ κ²Œμž„μ€ μ€€ν˜Έκ°€ λ³΄μœ ν•œ 병사 nλͺ…μœΌλ‘œ μ—°μ†λ˜λŠ” 적의 곡격을 μˆœμ„œλŒ€λ‘œ λ§‰λŠ” κ²Œμž„μž…λ‹ˆλ‹€. λ””νŽœμŠ€ κ²Œμž„μ€ λ‹€μŒκ³Ό 같은 κ·œμΉ™μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

  • μ€€ν˜ΈλŠ” μ²˜μŒμ— 병사 nλͺ…을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • λ§€ λΌμš΄λ“œλ§ˆλ‹€ enemy[i]마리의 적이 λ“±μž₯ν•©λ‹ˆλ‹€.
  • 남은 병사 쀑 enemy[i]λͺ… 만큼 μ†Œλͺ¨ν•˜μ—¬ enemy[i]마리의 적을 막을 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄ 남은 병사가 7λͺ…이고, 적의 μˆ˜κ°€ 2마리인 경우, ν˜„μž¬ λΌμš΄λ“œλ₯Ό λ§‰μœΌλ©΄ 7 - 2 = 5λͺ…μ˜ 병사가 λ‚¨μŠ΅λ‹ˆλ‹€.
    • 남은 λ³‘μ‚¬μ˜ μˆ˜λ³΄λ‹€ ν˜„μž¬ λΌμš΄λ“œμ˜ 적의 μˆ˜κ°€ 더 많으면 κ²Œμž„μ΄ μ’…λ£Œλ©λ‹ˆλ‹€.
  • κ²Œμž„μ—λŠ” λ¬΄μ κΆŒμ΄λΌλŠ” μŠ€ν‚¬μ΄ 있으며, λ¬΄μ κΆŒμ„ μ‚¬μš©ν•˜λ©΄ λ³‘μ‚¬μ˜ μ†Œλͺ¨μ—†μ΄ ν•œ λΌμš΄λ“œμ˜ 곡격을 막을 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ¬΄μ κΆŒμ€ μ΅œλŒ€ k번 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ€€ν˜ΈλŠ” λ¬΄μ κΆŒμ„ μ μ ˆν•œ μ‹œκΈ°μ— μ‚¬μš©ν•˜μ—¬ μ΅œλŒ€ν•œ λ§Žμ€ λΌμš΄λ“œλ₯Ό μ§„ν–‰ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μ€€ν˜Έκ°€ 처음 κ°€μ§€κ³  μžˆλŠ” λ³‘μ‚¬μ˜ 수 n, μ‚¬μš© κ°€λŠ₯ν•œ 무적ꢌ의 횟수 k, λ§€ λΌμš΄λ“œλ§ˆλ‹€ κ³΅κ²©ν•΄μ˜€λŠ” 적의 μˆ˜κ°€ μˆœμ„œλŒ€λ‘œ λ‹΄κΈ΄ μ •μˆ˜ λ°°μ—΄ enemyκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. μ€€ν˜Έκ°€ λͺ‡ λΌμš΄λ“œκΉŒμ§€ 막을 수 μžˆλŠ”μ§€ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

  • λͺ¨λ“  λΌμš΄λ“œλ₯Ό 막을 수 μžˆλŠ” κ²½μš°μ—λŠ” enemy의 길이λ₯Ό return ν•΄μ£Όμ„Έμš”.

λ‚΄ μ½”λ“œ

μ²˜μŒμ—λŠ” enemyμ—μ„œ 적이 λ§Žμ€ μˆœμ„œλ‘œ k개의 λΌμš΄λ“œλ₯Ό λ”°λ‘œ μ €μž₯ν•΄ 놓고 문제λ₯Ό ν’€μ—ˆλŠ”λ° μ˜ˆμ™Έκ°€ 많이 λ°œμƒν•΄ ν‹€λ Έλ‹€.

μ˜€λ¦„μ°¨μˆœ μš°μ„ μˆœμœ„ 큐λ₯Ό μ‚¬μš©ν•˜λ‹ˆ 훨씬 κ°„λ‹¨ν•˜κ²Œ ν’€ 수 μžˆμ—ˆλ‹€.

 

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

using namespace std;

int solution(int n, int k, vector<int> enemy) {
    int answer = k;
    
    // μ˜€λ¦„μ°¨μˆœ μš°μ„ μˆœμœ„ 큐
    priority_queue<int, vector<int>, greater<int>> pq;
    
    for( auto e : enemy)
    {    
        pq.push(e);
        
        // k λΌμš΄λ“œλŠ” λ¬΄μ κΆŒμ„ μ΄μš©ν•΄ λ„˜μ–΄κ°ˆ 수 μžˆμœΌλ―€λ‘œ
        // k λΌμš΄λ“œ 이상이 λ˜μ—ˆμ„λ•ŒλΆ€ν„° κ°€μž₯ 적을 κ°€μ§„ λΌμš΄λ“œλ₯Ό μ²˜λ¦¬ν•œλ‹€
        if(pq.size() > k)
        {
            n -= pq.top();
            pq.pop();
            
            if(n >= 0)
                ++answer;
            else
                return answer;
        }
    }
    
    return enemy.size();
}
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

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

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - 크레인 μΈν˜•λ½‘κΈ° κ²Œμž„(C++)  (2) 2023.08.10
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 2xn 타일링(C++)  (0) 2023.08.08
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 할인 행사(C++)  (0) 2023.08.03
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.3 - 인사고과(C++)  (1) 2023.08.01
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - N-Queen(C++)  (0) 2023.07.31
'πŸ–₯️ Study Note/Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - 크레인 μΈν˜•λ½‘κΈ° κ²Œμž„(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 2xn 타일링(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 할인 행사(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.3 - 인사고과(C++)
Beankong_
Beankong_
μ£Όλ‹ˆμ–΄ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž˜λ¨Έ 곡뢀 기둝
  • Beankong_
    Beankong's Devlog
    Beankong_
  • 전체
    였늘
    μ–΄μ œ
    • 전체 κΈ€ (141) N
      • β›… Daily (0)
      • πŸ–₯️ Study Note (135) N
        • Unreal Engine (5) N
        • 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++)
μƒλ‹¨μœΌλ‘œ

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