์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ |
0.3์ด | 512MB | 26.868% |
๋ฌธ์
ํ ์ค๋ก ๋ ๊ฐ๋จํ ์๋ํฐ๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๋ค. ์ด ํธ์ง๊ธฐ๋ ์์ด ์๋ฌธ์๋ง์ ๊ธฐ๋กํ ์ ์๋ ํธ์ง๊ธฐ๋ก, ์ต๋ 600,000๊ธ์๊น์ง ์ ๋ ฅํ ์ ์๋ค.
์ด ํธ์ง๊ธฐ์๋ '์ปค์'๋ผ๋ ๊ฒ์ด ์๋๋ฐ, ์ปค์๋ ๋ฌธ์ฅ์ ๋งจ ์(์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ผ์ชฝ), ๋ฌธ์ฅ์ ๋งจ ๋ค(๋ง์ง๋ง ๋ฌธ์์ ์ค๋ฅธ์ชฝ), ๋๋ ๋ฌธ์ฅ ์ค๊ฐ ์์์ ๊ณณ(๋ชจ๋ ์ฐ์๋ ๋ ๋ฌธ์ ์ฌ์ด)์ ์์นํ ์ ์๋ค. ์ฆ ๊ธธ์ด๊ฐ L์ธ ๋ฌธ์์ด์ด ํ์ฌ ํธ์ง๊ธฐ์ ์ ๋ ฅ๋์ด ์์ผ๋ฉด, ์ปค์๊ฐ ์์นํ ์ ์๋ ๊ณณ์ L+1๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด ํธ์ง๊ธฐ๊ฐ ์ง์ํ๋ ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
L | ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ฎ๊น (์ปค์๊ฐ ๋ฌธ์ฅ์ ๋งจ ์์ด๋ฉด ๋ฌด์๋จ) |
D | ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ฎ๊น (์ปค์๊ฐ ๋ฌธ์ฅ์ ๋งจ ๋ค์ด๋ฉด ๋ฌด์๋จ) |
B | ์ปค์ ์ผ์ชฝ์ ์๋ ๋ฌธ์๋ฅผ ์ญ์ ํจ (์ปค์๊ฐ ๋ฌธ์ฅ์ ๋งจ ์์ด๋ฉด ๋ฌด์๋จ) ์ญ์ ๋ก ์ธํด ์ปค์๋ ํ ์นธ ์ผ์ชฝ์ผ๋ก ์ด๋ํ ๊ฒ์ฒ๋ผ ๋ํ๋์ง๋ง, ์ค์ ๋ก ์ปค์์ ์ค๋ฅธ์ชฝ์ ์๋ ๋ฌธ์๋ ๊ทธ๋๋ก์ |
P $ | $๋ผ๋ ๋ฌธ์๋ฅผ ์ปค์ ์ผ์ชฝ์ ์ถ๊ฐํจ |
์ด๊ธฐ์ ํธ์ง๊ธฐ์ ์ ๋ ฅ๋์ด ์๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๊ณ , ๊ทธ ์ดํ ์ ๋ ฅํ ๋ช ๋ น์ด๊ฐ ์ฐจ๋ก๋ก ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ์ํํ๊ณ ๋ ํ ํธ์ง๊ธฐ์ ์ ๋ ฅ๋์ด ์๋ ๋ฌธ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ช ๋ น์ด๊ฐ ์ํ๋๊ธฐ ์ ์ ์ปค์๋ ๋ฌธ์ฅ์ ๋งจ ๋ค์ ์์นํ๊ณ ์๋ค๊ณ ํ๋ค.
์ ์ถ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ด๊ธฐ์ ํธ์ง๊ธฐ์ ์ ๋ ฅ๋์ด ์๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ N์ด๊ณ , ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ธธ์ด๋ 100,000์ ๋์ง ์๋๋ค. ๋์งธ ์ค์๋ ์ ๋ ฅํ ๋ช ๋ น์ด์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ M(1 ≤ M ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ์ ์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฑธ์ณ ์ ๋ ฅํ ๋ช ๋ น์ด๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ช ๋ น์ด๋ ์์ ๋ค ๊ฐ์ง ์ค ํ๋์ ํํ๋ก๋ง ์ฃผ์ด์ง๋ค.
์ฒซ์งธ ์ค์ ๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ์ํํ๊ณ ๋ ํ ํธ์ง๊ธฐ์ ์ ๋ ฅ๋์ด ์๋ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.
ํด๊ฒฐ
key point, ๋งํฌ๋ ๋ฆฌ์คํธ ๊ตฌํ!
์๋ ๋ ๋ฌธ์ ์ ๊ฐ์ ๋ฌธ์ ๋ค!
- 2020/05/21 - [๐ฅ PS(Problem Solving) ๐ฅ/BOJ] - [BOJ] #5397 ํค๋ก๊ฑฐ
- 2020/06/02 - [๐ฅ PS(Problem Solving) ๐ฅ/BOJ] - [BOJ] #2164 ์นด๋2
์ฝ๋ ํด์ค์ด ํ์ํ๋ฉด ํค๋ก๊ฑฐ ์ฐธ๊ณ ํด์ฃผ์ธ์.
์ฝ๋
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
21704 KB | 104 ms |
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#include<iostream>
// ๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ
class Node {
public:
char data;
Node* prev;
Node* next;
Node() {
prev = 0;
next = 0;
}
};
Node head;
Node tail;
char str[1000001], inst, c;
int n;
int main() {
scanf("%s", str);
scanf("%d", &n);
// ๋ฌธ์์ด์ ์ ์ฅํ ๋ ๋ฒ์๋ ์์คํค์ฝ๋.
//ํฌ์ธํฐ๊ฐ ์ด ๊ฐ์ ๋๋ฌํ์ ๋ ๋์์ ์๊ฒํ๊ธฐ ์ํด์
head.data = -1;
tail.data = -1;
head.next = &tail;
tail.prev = &head;
Node* cur; // ์
๋ ฅ๊ณผ ์ปค์์ ์ด๋ ์ํ.
cur = &head;
for (int i = 0; str[i] != NULL; i++) {
Node* nNode = new Node;
nNode->data = str[i];
nNode->prev = cur;
nNode->next = cur->next;
nNode->next->prev = nNode;
cur->next = nNode;
cur = nNode;
}
while (n--) {
scanf(" %c", &inst);
if (inst == 'P') scanf(" %c", &c);
if (inst == 'L') {
if (cur != &head) cur = cur->prev;
}
else if (inst == 'D') {
// ํค๋์์ tail ์ง์ ๊น์ง๋ง ์์ง์ผ์ ์๋ ๋
ธ๋.
if (cur->next != &tail) cur = cur->next;
}
else if (inst == 'B') {
// ๋ฉ๋ชจ์ฅ์ ์ปค์๋ฅผ ๋ดค์ ๋ ์ค๋ฅธ์ชฝ์ ์๋ก์ด ์
๋ ฅ์ด ๋ค์ด์จ๋ค๊ณ ์๊ฐํ๊ณ
// ๋ฐฑ์คํ์ด์ค๋ฅผ ์
๋ ฅ๋ฐ์ผ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ๋ฌธ์ ํ๋ ์ญ์ . tail -1
if (cur != &head) {
Node* tmp = cur;
cur->prev->next = cur->next;
cur->next->prev = cur->prev;
cur = cur->prev;
free(tmp);
}
}
else {
Node* nNode = new Node;
nNode->data = c;
nNode->prev = cur;
nNode->next = cur->next;
nNode->next->prev = nNode;
cur->next = nNode;
cur = nNode;
}
}
Node* t = head.next;
while (t->data != -1) {
printf("%c", t->data);
t = t->next;
}
return 0;
}
|
cs |
'๐ฅ PS(Problem Solving) ๐ฅ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #5052 ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2020.06.08 |
---|---|
[BOJ] #12789 ๋ํค๋ํค ๊ฐ์๋๋ฆฌ๋ฏธ (0) | 2020.06.02 |
[BOJ] #2164 ์นด๋2 (0) | 2020.06.02 |
[BOJ] #14830 ๊ฒฝ์ฌ๋ก (0) | 2020.05.21 |
[BOJ] #5397 ํค๋ก๊ฑฐ (0) | 2020.05.21 |
๋๊ธ