[BOJ/20136] ๋ฉ€ํ‹ฐํƒญ ์Šค์ผ€์ค„๋ง 2

2021. 6. 26. 18:19ยทDEV/PS

๐Ÿ”— ๋งํฌ

https://www.acmicpc.net/problem/20136

 

20136๋ฒˆ: ๋ฉ€ํ‹ฐํƒญ ์Šค์ผ€์ค„๋ง 2

๊ธฐ์ˆ™์‚ฌ์—์„œ ์‚ด๊ณ  ์žˆ๋Š” ์ค€๊ทœ๋Š” ํ•œ ๊ฐœ์˜ ๋ฉ€ํ‹ฐํƒญ์„ ์ด์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ค€๊ทœ๋Š” ํ‚ค๋ณด๋“œ, ํ—ค์–ด๋“œ๋ผ์ด๊ธฐ, ํ•ธ๋“œํฐ ์ถฉ์ „๊ธฐ, ๋””์ง€ํ„ธ ์นด๋ฉ”๋ผ ์ถฉ์ „๊ธฐ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ „๊ธฐ์šฉํ’ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์–ด์ฉ” ์ˆ˜ ์—†์ด ๊ฐ์ข… ์ „

www.acmicpc.net

๐Ÿคฏ ํ•œ์ค„ ํ›„๊ธฐ

๋ˆ„๊ฐ€ ๋ฉ€ํ‹ฐํƒญ์— 50๋งŒ๊ฐœ๋‚˜ ๊ฝ‚์•„์š” ใ…กใ…ก

๐Ÿคท ๋ฌธ์ œ

๐Ÿ‘ฉ‍๐Ÿ’ป ํ’€์ด

์ œํ•œ๋œ ๋ฉ€ํ‹ฐํƒญ ๊ตฌ๋ฉ ๊ฐœ์ˆ˜์— ์ „๊ธฐ ์šฉํ’ˆ์„ ๊ฝ‚์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๊ฝ‚์•„์•ผ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

ํšจ์œจ์ ์ด๋ž€๊ฑด ๋‹ค๋ฅธ ์ „๊ธฐ ์šฉํ’ˆ์„ ์“ฐ๋ ค๊ณ  ๋นผ๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ฆ‰, ๋งŽ์ด ๋‚˜์˜ค๋ฉด์„œ ๋” ์ตœ๊ทผ์— ๋‚˜์˜ค๋Š” ์šฉํ’ˆ๋“ค์€ ๋ฏธ๋ฆฌ ์•ˆ๋นผ๋†“๊ณ  ์žˆ๋Š”๊ฒŒ ์ด๋“์ด๋‹ค.

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ’€๋ฉด ๋˜๋Š”๋ฐ, ์ฒ˜์Œ์— ์ƒ๊ฐ ํ•œ ๊ฑด ๋ฉ€ํ‹ฐํƒญ ์ž์ฒด๋ฅผ ์šฐ์„ ์ˆœ์œ„ ํ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , ๊ทธ๋ฆฌ๋””ํ•˜๊ฒŒ ๋” ๋งŽ์ด ๋‚˜์˜ค๋Š” ์šฉํ’ˆ๋“ค์„ ๊ณ„์† ๊ฝ‚์•„๋‘๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ๋งŽ์ด ๋‚˜์˜ค๋Š” ์šฉํ’ˆ์ด ๋งจ ๋’ค์— ๋ชฐ๋ ค ์žˆ์œผ๋ฉด ์†Œ์šฉ์ด ์—†๋‹ค.

๋”ฐ๋ผ์„œ ๋” ๋จผ์ € ๋‚˜์˜ค๋Š” ์šฉํ’ˆ๋“ค๋„ ์ƒ๊ฐ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค.

ํ ํ•˜๋‚˜๋ฅผ ๋” ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ์ „๊ธฐ ์šฉํ’ˆ์ด ๋‚˜ํƒ€๋‚˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ชจ๋‘ ๋„ฃ์–ด์คฌ๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ์šฐ์„ ์ˆœ์œ„ ํ(๋ฉ€ํ‹ฐํƒญ)์—๋Š” ํ•ด๋‹น ์ „๊ธฐ ์šฉํ’ˆ์˜ ์ด๋ฆ„, ํ•ด๋‹น ์ „๊ธฐ ์šฉํ’ˆ์ด ๋‹ค์Œ์— ๋‚˜์˜ฌ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ ๋ฅผ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค.

ํ์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋” ๋’ค์ธ (๋†’์€) ์ˆœ์„œ๋Œ€๋กœ์ด๋‹ค. 

๊ทธ๋Ÿฌ๋ฉด ํ•œ๋ฒˆ์— ๊ตํ™˜ํ•  ์ „๊ธฐ ์šฉํ’ˆ์„ ์•Œ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ๋” ๋’ค์— ๋‚˜์˜ค๋Š” ์ „๊ธฐ ์šฉํ’ˆ์„ ๋จผ์ € ๋นผ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์ฃผ์˜ํ•  ์ ์€, ์ด๋ฏธ ๊ฝ‚ํ˜€์žˆ๋Š” ๊ฒฝ์šฐ์ธ๋ฐ ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” visit ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฝ‚ํ˜€์žˆ์œผ๋ฉด 1๋กœ ๋ฐ”๊พธ๊ณ  ๋น ์ง€๋ฉด ๋‹ค์‹œ 0์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

๊ฝ‚ํ˜€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ์— ๋‚˜์˜ฌ ์ธ๋ฑ์Šค๋ฅผ ๊ฐฑ์‹ ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ, ์ด ์ ์€ ์‚ฌ์‹ค ๊ทธ๋ƒฅ pushํ•ด๋„ ์ƒ๊ด€์ด์—†๋‹ค.

์™œ๋ƒํ•˜๋ฉด ํ๋Š” ๋ฌด์กฐ๊ฑด ์ธ๋ฑ์Šค ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ „์— ์ด๋ฏธ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ „๊ธฐ ์šฉํ’ˆ์€ ์ง€๊ธˆ ๋“ค์–ด๊ฐˆ ์ธ๋ฑ์Šค๋ณด๋‹ค ๋” ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ํ์˜ top์œผ๋กœ ๋ถ€ํ„ฐ ๋” ๋‚ด๋ ค๊ฐˆ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฑด ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ pushํ•ด๋ฒ„๋ ค๋„ ์ƒ๊ด€์ด ์—†๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

//AC
//BOJ 20136 ๋ฉ€ํ‹ฐํƒญ ์Šค์ผ€์ฅด๋ง2
#include <iostream>
#include <vector>
#include <queue>
#define SIZE 500001
#define INF 987654321
using namespace std;
struct Multi{
    int name; int idx;
};
struct Cmp{
    bool operator()(const Multi &a, const Multi &b){
        return a.idx < b.idx;
    }
};
priority_queue<Multi, vector<Multi>, Cmp> tap;
priority_queue<int, vector<int>, greater<int> > q[SIZE];
int arr[SIZE];
int visit[SIZE];
int main(){
    int N, K, n, ans = 0, cnt = 0;
    cin >> N >> K;
    for(int i=1; i<=K; i++){
        scanf("%d", &n);
        arr[i] = n;
        q[n].push(i);
    }
    for(int i=1; i<=K; i++){
        if(visit[arr[i]]){
            q[arr[i]].pop();
            if(!q[arr[i]].empty())  tap.push({arr[i], q[arr[i]].top()});
            else    tap.push({arr[i], INF});
            continue;
        }
        if(cnt < N){
            q[arr[i]].pop();
            if(!q[arr[i]].empty())  tap.push({arr[i], q[arr[i]].top()});
            else{
                tap.push({arr[i], INF});
            }
            cnt += 1;
            visit[arr[i]] = 1;
        }
        else{
                Multi prev = tap.top();
                visit[prev.name] = 0;
                tap.pop();
                q[arr[i]].pop();
                if(!q[arr[i]].empty())  tap.push({arr[i], q[arr[i]].top()});
                else    tap.push({arr[i], INF});
                visit[arr[i]] = 1;
                ans += 1;
            }
        
    }
    printf("%d", ans);
    return 0;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'DEV > PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ/22352] ํ•ญ์ฒด์ธ์‹, c++  (0) 2021.08.05
[BOJ/16118] ๋‹ฌ๋น› ์—ฌ์šฐ, c++  (0) 2021.07.25
[BOJ/21924] ๋„์‹œ ๊ฑด์„ค, c++  (0) 2021.06.08
[BOJ/2023] ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜, c++  (1) 2021.06.08
[BOJ/21921] ๋ธ”๋กœ๊ทธ , c++  (0) 2021.06.08
'DEV/PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ/22352] ํ•ญ์ฒด์ธ์‹, c++
  • [BOJ/16118] ๋‹ฌ๋น› ์—ฌ์šฐ, c++
  • [BOJ/21924] ๋„์‹œ ๊ฑด์„ค, c++
  • [BOJ/2023] ์‹ ๊ธฐํ•œ ์†Œ์ˆ˜, c++
jobchae
jobchae
๋งํ•˜๋Š” ๊ฐ์ž์ง€๋งŒ, ์ฝ”๋“œ๋ฅผ ๋„์ ์ด๋Š” Node.js ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.
  • jobchae
    JOBCHAE
    jobchae
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿš€ JOBCHAE (177)
      • DEV (146)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • ์žก๋‹คํ•œ ๊ฐœ๋ฐœ ์ผ์ง€ (20)
        • injection (1)
        • CI CD (0)
        • JS, TS (1)
      • ์ถ•๊ตฌ (0)
      • ์ผ์ƒ (19)
      • ์˜ํ™” (3)
      • ์Œ์•… (8)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๐Ÿ’ป Github
    • ๐Ÿ™‹๐Ÿป Linkedin
    • ๐Ÿ“– ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • PS Github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    GitHub
    mongoDB
    typescript
    ์•ฑ์žผ
    nodejs
    Express
    ์šฐ์„ ์ˆœ์œ„ํ
    ์Šฌ๋ž™๋ด‡
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    DP
    ๋ฆฌ์•กํŠธ
    PS
    boj
    DFS
    ๋ ›์ธ ๋ฝํŽ˜์Šคํ‹ฐ๋ฒŒ
    ํšŒ๊ณ 
    node.js
    ์ผ์ƒ
    ์ด๋ถ„ํƒ์ƒ‰
    SOPT
    BFS
    Nest.js
    ์†ํŠธ
    ๋ฐฑ์ค€
    ์œ„์ƒ์ •๋ ฌ
    ์Šฌ๋ž™
    Nest
    slack
    react
    aws
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
jobchae
[BOJ/20136] ๋ฉ€ํ‹ฐํƒญ ์Šค์ผ€์ค„๋ง 2
์ƒ๋‹จ์œผ๋กœ

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