๋ฌธ์ ๋งํฌ
10942๋ฒ: ํฐ๋ฆฐ๋๋กฌ? (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 |