๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐฑ์ค€/Gold

[BOJ] 10775 : ๊ณตํ•ญ

by Jaeguk 2022. 3. 16.
๋ฌธ์ œ ๋งํฌ

10775๋ฒˆ: ๊ณตํ•ญ (acmicpc.net)

 

10775๋ฒˆ: ๊ณตํ•ญ

์˜ˆ์ œ 1 : [2][?][?][1] ํ˜•ํƒœ๋กœ ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 3๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. ์˜ˆ์ œ 2 : [1][2][3][?] ํ˜•ํƒœ๋กœ ๋„ํ‚น ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ , 4๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” ์ ˆ๋Œ€ ๋„ํ‚น ์‹œํ‚ฌ ์ˆ˜ ์—†์–ด์„œ ์ดํ›„ ์ถ”๊ฐ€์ ์ธ ๋„ํ‚น์€ ๋ถˆ

www.acmicpc.net

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ํ‘ธ๋Š” ๋ฌธ์ œ

ํ’€์ด ๊ณผ์ •

๋ณดํ†ต ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋“ค์„ ๋ณด๋ฉด ๋ฌด์—‡์„ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ• ์ง€ ์‰ฝ๊ฒŒ ์ •ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋“ค์ด ๋งŽ์ง€๋งŒ, ์ด ๋ฌธ์ œ๋Š” ๋ช…ํ™•ํ–ˆ๋‹ค.

i๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋Š” 1 <= gi <= G ๋ฒˆ์งธ ๊ฒŒ์ดํŠธ ์ค‘ ํ•˜๋‚˜์— ๋“ค์–ด๊ฐ€์•ผํ•œ๋‹ค. ์–ด๋–ค ๋น„ํ–‰๊ธฐ๋“ ์ง€ 1๋ฒˆ ๊ฒŒ์ดํŠธ์—๋Š” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋‚ฎ์€ ๋ฒˆํ˜ธ์˜ ๊ฒŒ์ดํŠธ์ผ์ˆ˜๋ก ๋น„ํ–‰๊ธฐ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ํ™•๋ฅ ์ด ๋†’๋‹ค.

์ฆ‰ ๊ฒŒ์ดํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์ตœ๋Œ€ํ•œ ํฐ ๊ณณ๋ถ€ํ„ฐ ์ฑ„์›Œ๋‚˜๊ฐ€์•ผ ๋งŽ์€ ๋น„ํ–‰๊ธฐ๋ฅผ ๊ฒŒ์ดํŠธ์— ๋„ํ‚นํ•˜๊ธฐ์— ์œ ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋„ํ‚น ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ํฐ ๋ฒˆํ˜ธ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” get_idx ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

gi ๋ถ€ํ„ฐ ํ•œ ๋ฒˆํ˜ธ์”ฉ ๋‚ด๋ ค์˜ค๋ฉด์„œ ๋น„์–ด์žˆ๋Š” ๊ฒŒ์ดํŠธ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฆฌํ„ดํ–ˆ๋‹ค. ๋งŒ์•ฝ ๋นˆ ๊ณต๊ฐ„์ด ์—†์–ด์„œ 0์„ ๋ฆฌํ„ดํ•œ๋‹ค๋ฉด ์ด์ œ ๋”์ด์ƒ ๋น„ํ–‰๊ธฐ๊ฐ€ ๋ชป๋“ค์–ด ๊ฐ„๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๊ทธ๋•Œ๊นŒ์ง€ ๋“ค์–ด๊ฐ„ ๋น„ํ–‰๊ธฐ์˜ ์ˆ˜๊ฐ€ ๋‹ต์ด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋งค๋ฒˆ gi ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋‚ด๋ ค์˜ค๋ฉด์„œ ๋ฒˆํ˜ธ๋ฅผ ์ฐพ๊ฒŒ๋˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ section ์ด๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋น„ํ–‰๊ธฐ๊ฐ€ ๊ฐ€๋“ ์ฐจ์žˆ๋Š” ๊ตฌ๊ฐ„์„ ์ €์žฅํ•ด๋‘์—ˆ๋‹ค. ๋งŒ์•ฝ section[10] = 3 ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด 3๋ฒˆ๊ฒŒ์ดํŠธ๋ถ€ํ„ฐ 10๋ฒˆ๊ฒŒ์ดํŠธ๊นŒ์ง€๋Š” ๋น„ํ–‰๊ธฐ๊ฐ€ ๋ชจ๋‘ ์ฐจ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. gi = 11์ด๋ผ๊ณ  ํ•˜์ž. 11๋ฒˆ๊ฒŒ์ดํŠธ์— ์ž๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  10๋ฒˆ๊ฒŒ์ดํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ section[10] = 3 ์ด๋ฏ€๋กœ 10 ~ 3๋ฒˆ๊ฒŒ์ดํŠธ๊นŒ์ง€๋Š” ๊ฐ€๋“์ฐฌ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฐ”๋กœ 2๋ฒˆ ๊ฒŒ์ดํŠธ๋กœ๊ฐ€์„œ ๋‹ค์‹œ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <stack>
#include <vector>
#include <math.h>
#include <queue>
#include <climits>
#include <algorithm>
#include <iomanip>
#include <map>
#define mod 1000000007
using namespace std;
typedef long long ll;
typedef priority_queue<pair<pair<ll, int>int>vector<pair<pair<ll, int>int>>, greater<pair<pair<ll, int>int>>> Priority_queue;
const ll INF = LLONG_MAX;
const int MAX_N = 100000 + 5;
int G, P;
bool visited[MAX_N];
int section[MAX_N];
 
int get_idx(int num) {
    int temp = num;
    if (section[num] != -1) {
        num = max(section[num]-1,0);
    }
    while(1) {
        if (visited[num] == false) {
            section[temp] = num;
            break;
        }
        else if (section[num] != -1) {
            num = max(section[num]-1,0);
        }
        else num--;
    }
    return num;
}
int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> G >> P;
    memset(section, -1sizeof(section));
    int ans = 0;
    for (int i = 1; i <= P; i++) {
        int num;
        cin >> num;
        int idx = 0;
        if (!ans) {
            idx = get_idx(num);
            if (!idx)
                ans = i - 1;
            if (idx && i == P)
                ans = i;
            visited[idx] = true;
        }
    }
    cout << ans << "\n";
    return 0;
}
 
cs

์ฒซ ์‹œ๋„๋ถ€ํ„ฐ 73ํผ์„ผํŠธ๊นŒ์ง€ ๊ฐ€๋ฉด ๋ญ”๊ฐ€ ํฌ๋ง์„ ๋А๋ผ๊ฒŒ ๋ผ์„œ ๋” ์ž˜ ํ’€๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค๐Ÿ˜Š

728x90