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

[BOJ] 10942 : ํŒฐ๋ฆฐ๋“œ๋กฌ?

by Jaeguk 2022. 1. 20.
๋ฌธ์ œ ๋งํฌ

10942๋ฒˆ: ํŒฐ๋ฆฐ๋“œ๋กฌ? (acmicpc.net)

 

10942๋ฒˆ: ํŒฐ๋ฆฐ๋“œ๋กฌ?

์ด M๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ํ™์ค€์ด์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋ช…์šฐ์˜ ๋‹ต์„ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ถœ๋ ฅํ•œ๋‹ค. ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ ๊ฒฝ์šฐ์—๋Š” 1, ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

ํ’€์ด

ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ž€ ์–‘์ชฝ์ด ๋Œ€์นญ์„ ์ด๋ฃจ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 12321 ๊ฐ™์€ ๊ฒƒ๋“ค.

์ตœ๋Œ€ 2000๊ธธ์ด์˜ ์ˆ˜์—ด์„ 1000000ํšŒ ๋™์•ˆ ๋งค๋ฒˆ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ๊ฒ€์‚ฌํ•˜๋ฉด 0.5์ดˆ์˜ ์‹œ๊ฐ„์œผ๋กœ ์ ˆ๋Œ€ ๋ถ€์กฑํ•˜๋‹ค.

๊ทธ๋ž˜์„œ palinedrome์ด๋ผ๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด palinedrome[Start][End] ๊นŒ์ง€๊ฐ€ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ์•„๋‹Œ์ง€ ์ €์žฅํ•ด๋’€๋‹ค.

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <climits>
#include <algorithm>
#include <tuple>
#include <cmath>
using namespace std;
typedef long long ll;
const int MAX_N = 2000 + 5;
int N, M;
int S, E;
vector<int> arr;
int palinedrome[MAX_N][MAX_N];
 
bool Check(int St, int Ed) {
    for (int i = 0; i <= (E - S) / 2; i++) {
        if (palinedrome[St + i][Ed - i] == 1)
            return true;
        if (palinedrome[St + i][Ed - i] == 2)
            return false;
        else {
            if (arr[St + i] != arr[Ed - i]) {
                palinedrome[St + i][Ed - i] = 2;
                return false;
            }
        }
    }
    for (int i = 0; i < (E - S) / 2; i++) {
        palinedrome[St + i][Ed - i] = 1;
    }
    return true;
}
 
int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> N;
    int num;
    arr.push_back(0);
    for (int i = 0; i < N; i++) {
        cin >> num;
        arr.push_back(num);
    }
    cin >> M;
    while (M--) {
        cin >> S >> E;
        if (S == E) {
            cout << "1\n";
            continue;
        }
        bool chk = Check(S, E);
        if (chk) cout << "1\n";
        else {
            palinedrome[S][E] = 2;
            cout << "0\n";
        }
    }
    return 0;
}
 
 
cs

 

์ˆ˜์—ด ์–‘์ชฝ์—์„œ ๋ถ€ํ„ฐ ๊ฒ€์‚ฌํ•˜๋‹ค๊ฐ€ ์ค‘๊ฐ„ ๋ถ€๋ถ„์ด ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ฉด ๋‹น์—ฐํžˆ ๊ทธ ์ˆ˜๋Š” ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 12321 ์—์„œ 232๊ฐ€ ์ด๋ฏธ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ ๊ฑธ ์•Œ๊ณ ์žˆ๋‹ค๋ฉด ์–‘์ชฝ์˜ 1 1 ๋งŒ ๊ฐ™์€์ง€ ๊ฒ€์‚ฌํ•˜๋ฉด ๋œ๋‹ค.

์ฒ˜์Œ์— ๋ฐ˜๋ณต๋ฌธ ๋ฒ”์œ„๋ฅผ ์ž˜๋ชป ์„ค์ •ํ•ด์„œ ์• ๋ฅผ ๋จน๊ธดํ–ˆ์ง€๋งŒ ์•„๋ฌดํŠผ AC

728x90

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

[BOJ] 1707 : ์ด๋ถ„ ๊ทธ๋ž˜ํ”„  (0) 2022.01.21
[BOJ] 1579 : ์•ฑ  (0) 2022.01.20
[BOJ] 2629 : ์–‘ํŒ”์ €์šธ  (0) 2022.01.19
[BOJ] 2661: ์ข‹์€ ์ˆ˜์—ด  (0) 2022.01.19
[BOJ] 1799 : ๋น„์ˆ  (0) 2022.01.19