์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ฐ์ ์์ ํ
- CVE
- ์ด๋ถ ํ์
- ์ต๋จ ๊ฒฝ๋ก
- ๋ฐฑํธ๋ํน
- dfs
- ๋งต
- JPA
- error
- dynamic debugging
- ๋์ ํฉ
- ๋ฐ์ดํฌ์คํธ๋ผ
- ์คํ
- ๋ถํ ์ ๋ณต
- thymeleaf
- java
- Spring
- ์์ ์ ๋ ฌ
- Reversing
- GCP
- OS
- ๊ทธ๋ฆฌ๋
- ์ฌ๊ท
- ๋ฌธ์์ด
- DP
- c++
- ๊ตฌํ
- BFS
- ์๋ฎฌ๋ ์ด์
- web
- Today
- Total
hades
[Baekjoon] 9935๋ฒ: ๋ฌธ์์ด ํญ๋ฐ ๋ณธ๋ฌธ
๐ฅ ๋ฌธ์
https://www.acmicpc.net/problem/9935
๐ ์ค๊ณ
๋ฌธ์์ด์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ฉด์, ํญ๋ฐ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ ๋ถ๋ถ ๋ฌธ์์ด์ด ๋ง๋ค์ด์ง๋ฉด, ๋งจ ์๋ถํฐ ํญ๋ฐ์์ผ์ผ ํ๋ฏ๋ก, ์คํ์ ์ด์ฉํ๋ค๋ ๊ฒ์ ์ฝ๊ฒ ํ์ ํ ์ ์์๋ค.
ํญ๋ฐ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ฉด ํ์ฌ ์ธ๋ฑ์ค์์ ํญ๋ฐ ๋ฌธ์์ด์์ ์ผ์นํ ์ธ๋ฑ์ค๋ฅผ save์ ์ ์ฅํ๊ณ , ๋ค์ ํ์ํ ์ธ๋ฑ์ค(cur_idx)๋ฅผ 1 ์ฆ๊ฐ์ํค๋ฉด์ ํญ๋ฐ ๋ฌธ์์ด์ ๊ธธ์ด์ ์ผ์นํ๋ฉด ํญ๋ฐ์ํค๋ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ค.
์ด๊ธฐ ์ค๊ณ์์์ ๋ฌธ์ ์ ์ ์คํ์ ๋ฌธ์๋ง ๋ด์๊ธฐ ๋๋ฌธ์ ํญ๋ฐํ๊ณ ๋ ํ, ๋ค์ ํ์ํ ์ธ๋ฑ์ค๋ฅผ ํญ๋ฐ ๋ฌธ์์ด์ด ์์ฑ๋ ์์น์์ ํญ๋ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋บ ์ธ๋ฑ์ค์์์ save ๊ฐ๊ณผ ๊ฐ์ด ์ ๋ชป ๊ตฌํ์๋ค. ํ์ง๋ง ์ด๋ฐ ๊ฒฝ์ฐ,
abaabcdbcdcd
abcd
์ ๊ฐ์ด ์ค๊ฐ์ ๋ ๋ฒ ์ด์ ํญ๋ฐ์ด ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ์ ์ฌ๋ฐ๋ฅด์ง ์๋ค.
๋จ์ํ๊ฒ ์คํ์ ๋ฌธ์์ ๊ทธ ๋ฌธ์์ ์์น๋ฅผ ๊ฐ์ด ์ ์ฅํ๊ณ , ๊ทธ ์์น์์์ save๊ฐ + 1์ด ๋ค์ ํ์ํ ์ธ๋ฑ์ค์ด๋ค.
๐ ํ์ด
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
string original, boom;
stack<pair<char, int>> s;
vector<int> save(1000000, -1);
int cur_idx = 0, temp_idx;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> original >> boom;
int original_length = original.length();
int boom_length = boom.length();
for (int i = 0; i < original_length; i++) {
s.push({ original[i], i });
if (s.top().first == boom[cur_idx]) {
save[i] = cur_idx;
cur_idx += 1;
if (cur_idx == boom_length) {
for (int j = 0; j < boom_length; j++) {
s.pop();
}
if (s.empty()) {
cur_idx = 0;
}
else {
cur_idx = save[s.top().second] + 1;
}
}
}
else {
cur_idx = 0;
if (s.top().first == boom[cur_idx]) {
save[i] = cur_idx;
cur_idx += 1;
}
}
}
string result = "";
if (s.empty()) {
cout << "FRULA" << "\n";
return 0;
}
while (!s.empty()) {
result += s.top().first;
s.pop();
}
reverse(result.begin(), result.end());
cout << result << "\n";
return 0;
}
'๐ PS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 5639๋ฒ: ์ด์ง ๊ฒ์ ํธ๋ฆฌ (0) | 2024.09.06 |
---|---|
[Baekjoon] 17144๋ฒ: ๋ฏธ์ธ๋จผ์ง ์๋ ! (0) | 2024.09.05 |
[Baekjoon] 1197๋ฒ: ์ต์ ์คํจ๋ ํธ๋ฆฌ (0) | 2024.09.02 |
[Baekjoon] 9663๋ฒ: N-Queen (0) | 2024.08.28 |
[Baekjoon] 1932๋ฒ: ์ ์ ์ผ๊ฐํ (0) | 2024.08.19 |