Skip to content

Conversation

@9kyo-hwang
Copy link
Member

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

๋””ํŽœ์Šค ๊ฒŒ์ž„

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

1์‹œ๊ฐ„

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

์ตœ๋Œ€ $1,000,000$ ๋ผ์šด๋“œ์— ๊ฑธ์ณ ์ ๋“ค์ด ๋“ค์–ด์˜จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ๋Œ€ $500,000$๋ผ์šด๋“œ๋ฅผ ๋ฌด์ ๊ถŒ์„ ์‚ฌ์šฉํ•ด ๋ณ‘์‚ฌ ์†Œ๋ชจ๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋ฐฑํŠธ๋ž˜ํ‚น ๋“ฑ์„ ์ด์šฉํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ์—๋Š” ์ˆซ์ž๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค. ๋ผ์šด๋“œ๊ฐ€ ์ตœ๋Œ€ $1,000,000$์ด๊ธฐ ๋•Œ๋ฌธ์— $O(N^2)$ ํ’€์ด๋ฒ•๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰ $O(N logN)$ ํ’€์ด๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ง๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ–ˆ์„ ๋•Œ๋Š”, ๋ฌด์ ๊ถŒ์€ ๊ฐ€๋Šฅํ•œ "์ ์˜ ์ˆ˜๊ฐ€ ๋งŽ์€ ๋ผ์šด๋“œ"์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ "์„ ํ˜•ํƒ์ƒ‰"์œผ๋ก  ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๊ทธ๋ ‡๋‹ค๊ณ  ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ํ™•์ธํ•  ์ˆ˜๋Š” ์—†๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์›๋ฆฌ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค.

  1. ์ผ๋‹จ์€ ๋งค ๋ผ์šด๋“œ๋งˆ๋‹ค ๋“ฑ์žฅํ•˜๋Š” ์  ์ˆ˜์— ๋งž๊ฒŒ ๋ณ‘์‚ฌ๋ฅผ ์†Œ๋ชจํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋™์‹œ์— ์  ์ˆ˜๋ฅผ MaxHeap์— ๊ธฐ๋กํ•œ๋‹ค.
  2. ๋งŒ์•ฝ ๋‚จ์€ ๋ณ‘์‚ฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ด์–ด์„œ ๋ผ์šด๋“œ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  3. ๋‚จ์€ ๋ณ‘์‚ฌ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด ์•„๋ž˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    i. ๋งŒ์•ฝ ๋” ์ด์ƒ ๋ฌด์ ๊ถŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ผ์šด๋“œ๋ฅผ ์ค‘๋‹จํ•œ๋‹ค.
    ii. ์•„๋‹ˆ๋ผ๋ฉด MaxHeap์—์„œ ์ง€๋‚œ ๋ผ์šด๋“œ ์ค‘ ๊ฐ€์žฅ ์ ์ด ๋งŽ์•˜๋˜ ๋ผ์šด๋“œ์˜ ์  ์ˆ˜๋ฅผ popํ•ด ๊ทธ ์ˆ˜ ๋งŒํผ ๋ณ‘์‚ฌ ์ˆ˜๋ฅผ ๋ณต์›์‹œํ‚ค๊ณ  ๋‚จ์€ ๋ฌด์ ๊ถŒ ํšŸ์ˆ˜๋ฅผ 1 ์ฐจ๊ฐ์‹œํ‚จ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ MaxHeap์„ ์‚ฌ์šฉํ•˜๋ฉด $O(logN)$ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์ง€๋‚œ ๋ผ์šด๋“œ ์ค‘ ๊ฐ€์žฅ ์ ์ด ๋งŽ์€ ๋ผ์šด๋“œ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ œ๋ชฉ์„-์ž…๋ ฅํ•ด์ฃผ์„ธ์š”_ (2)

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

using namespace std;

int solution(int N, int K, vector<int> InEnemies) 
{
    priority_queue<int> NumofEnemiesBlocked;  // MaxHeap
    int Round = 0;
    
    for(int Enemy : InEnemies)
    {
        N -= Enemy;
        NumofEnemiesBlocked.emplace(Enemy);
        
        if(N < 0)  // ๋ฌด์ ๊ถŒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ!
        {
            if(K == 0)  // ๋” ์ด์ƒ ๋ผ์šด๋“œ ์ง„ํ–‰ ๋ถˆ๊ฐ€
            {
                break;
            }
            
            N += NumofEnemiesBlocked.top();  // ์ด์ „ ๋ผ์šด๋“œ ์ค‘ ๊ฐ€์žฅ ์ ์ด ๋งŽ์•˜๋˜ ๋ผ์šด๋“œ ์ •๋ณด ์ถ”์ถœ
            NumofEnemiesBlocked.pop();
            K--;
        }
        
        Round++;
    }
    
    return Round;
}

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

์™ค์ผ€ ๊ทธ๋ฆฌ๋”” ์œ ํ˜•์€ ์•ˆํ’€๋ฆฌ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
์˜ˆ์ „์—๋„ ์ฝ”ํ…Œ๋ณผ ๋•Œ ๊ทธ๋ฆฌ๋””/์šฐ์„ ์ˆœ์œ„ํ ์“ฐ๋Š” ๋ฌธ์ œ ๋ชป ํ’€์—ˆ์—ˆ๋Š”๋ฐ, ์ด๊ฒƒ๋„ ํ•œ์ฐธ ์‚ฝ์งˆํ•˜๋‹ค๊ฐ€ ๊ฒจ์šฐ ํ•ด๊ฒฐํ–ˆ๋‹ค ํ ...

Copy link
Collaborator

@mjj111 mjj111 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฌธ์ œ ๋‹ค ํ’€๊ณ , ๊ตํ™ฉ๋‹˜ ์ฝ”๋“œ ๋ณด๋‹ˆ round ๋ณ€์ˆ˜๋ช…์ด ๋” ๋ช…ํ™•ํ•ด์„œ ๋ฐ”๋กœ ๋ƒ…๋‹ค ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹

import heapq 
def solution(n, k, enemy):
    answer = len(enemy)
    pq = []
    my = n
    card = k

    for round in range(len(enemy)):
        my -= enemy[round]
        heapq.heappush(pq, -enemy[round])
        if my < 0:
            if card > 0:
                my += heapq.heappop(pq) * -1 
                card -= 1
            else :
                return round
    return answer

Copy link
Member

@gjsk132 gjsk132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์˜ค๋žœ๋งŒ์— ๋ณด๋Š” ์ตœ๋Œ€ํž™ ์Šฅ์‚ญ~

from heapq import *

def solution(n, k, enemy):
    round = 0

    fight = []

    for e in enemy:
        round += 1
        n -= e
        heappush(fight, -e)

        while n < 0 and k > 0:
            k -= 1
            n -= heappop(fight)
        
        if n < 0 :
            round -= 1
            break

    return round

@9kyo-hwang 9kyo-hwang mentioned this pull request Oct 1, 2024
@9kyo-hwang 9kyo-hwang merged commit ef17607 into main Apr 30, 2025
2 checks passed
@9kyo-hwang 9kyo-hwang deleted the 65-9kyo-hwang branch April 30, 2025 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants