- LCs
- ์ด๋ถํ์
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- ์ํฐ๋
- ํธ๋ฆฌ
- ์น๋ฆฐ์ด
- Python
- ๋นํธ๋ง์คํน
- ํ๋ฆฌ์จ๋ณด๋ฉ
- ๋ฐฑ์ค
- ์ฌ๊ท
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ์์ฝ๋
- DP
- Union-Find
- ๋นํธ๋งต
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- nestjs
- js
- golang
- go
- ๋ค์ต์คํธ๋ผ
- C++
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- DFS
- ์นด์นด์ค2021
- ์นด์นด์ค ์ฝํ
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
Hello Ocean! ๐ผ
[๋ฐฑ์ค/C++] 14906. ์ค๋ฌํผ ๋ณธ๋ฌธ
๋ฌธ์
https://www.acmicpc.net/problem/14906
ํ์ด
์ค๋ฌํผ = ์ค๋ฆผํ + ์ค๋ผํ
[์ค๋ฆผํ]
AH
AB(์ค๋ฆผํ)C
A(์ค๋ผํ)C
[์ค๋ผํ]
DFG or EFG
DF(์ค๋ผํ) or EF(์ค๋ผํ)
์ฌ๊ท๋ฅผ ์ด์ฉํ๋ค.
isSlimpํจ์๋ input์์ ์ค๋ฆผํ์ ์์idx๋ฅผ returnํ๋ค.
์ฌ๋ฐ๋ฅธ ์ค๋ฆผํ๋ฅผ ์ฐพ์ ์ ์์ ๋์๋ -1์ returnํ๋ค.
ex) isSlimp(AH~~~) : 2
isSlimp(ABAHC~~~) : 5
isSlumpํจ์๋ input์ด ์ค๋ผํ์ธ์ง ์ฌ๋ถ๋ฅผ returnํ๋ค.
๋ฐ๋ผ์, ๊ฐ ๋ฌธ์์ด์ ๋ํด
1. isSlimp(๋ฌธ์์ด) : return๊ฐ์ด -1์ผ ๊ฒฝ์ฐ 2๋ฒ์ผ๋ก ๋์ด๊ฐ์ง ์๋๋ค.
2. isSlump(๋ถ๋ถ๋ฌธ์์ด) : 1๋ฒ์ return๊ฐ์ ์ด์ฉํ์ฌ ๋ฌธ์์ด์์ ์ค๋ฆผํ๋ฅผ ์๋ฅธ ๋ถ๋ถ๋ฌธ์์ด ์ด์ฉ
3. 2๋ฒ์ ๊ฒฐ๊ณผ๊ฐ true์ด๋ฉด ์ฑ๊ณต์ด๋ค.
์ด๋ ค์ ๋ ์
์ ๊ท์์ ์ธ ๋, \w ๋ฅผ ์จ์ผํ๋๋ฐ, c++์์๋ \\w์ ๊ฐ์ด \๋ฅผ 2๊ฐ ์ ์ด์ฃผ์ด์ผ ์ ์์ ์ผ๋ก ์๋ํ๋ค.
์ฝ๋
#include <iostream>
#include <regex>
#include <string>
#include <vector>
using namespace std;
bool isSlump(string s) {
regex re1("^[D,E]F+G$"); // DFG, EFG
regex re2("^([D,E]F+)\\w+$"); // DF์ค๋ผํ, EF์ค๋ผํ
bool result = regex_match(s, re1);
if (result)
return true;
smatch match;
result = regex_match(s, match, re2);
if (result)
if (isSlump(s.substr(match[1].str().size())))
return true;
return false;
}
int isSlimp(string s) {
regex re1("^AH\\w*"); // AH
regex re2("^(AB\\w+C+)\\w+"); // AB์ค๋ฆผํC
regex re3("^(A\\w+C)\\w+"); // A์ค๋ผํC
bool result = regex_match(s, re1);
if (result) {
return 2;
}
smatch match;
result = regex_match(s, match, re2);
if (result) {
if (isSlimp(s.substr(2, match[1].str().size() - 2)) != -1)
return match[1].str().size();
return -1;
}
result = regex_match(s, match, re3);
if (result) {
if (isSlump(s.substr(1, match[1].str().size() - 2)))
return match[1].str().size();
return -1;
}
return -1;
}
int main() {
int N; cin >> N;
vector<bool> outputs;
for (int n = 0;n < N;n++) {
string input; cin >> input;
bool result = false;
int slimp_idx = isSlimp(input); // ์ด๋๊น์ง๊ฐ ์ค๋ฆผํ์ธ์ง
if (slimp_idx == -1) {
outputs.push_back(false); continue;
}
input = input.substr(slimp_idx);
bool output = isSlump(input); // ๋ค์ ๋จ์ ๋ฌธ์์ด์ด ์ค๋ผํ์ธ์ง
outputs.push_back(output);
}
cout << "SLURPYS OUTPUT" << endl;
for (int i = 0;i < N;i++) {
if (outputs[i]) cout << "YES" << endl;
else cout << "NO" << endl;
}
cout <<"END OF OUTPUT" << endl;
return 0;
}
๊ฒฐ๊ณผ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/C++] [1์ฐจ] ์ ํ๋ฒ์ค (0) | 2021.12.08 |
---|---|
[C++/ํ๋ก๊ทธ๋๋จธ์ค] ์ถ์ ํธ๋ํฝ (0) | 2021.11.17 |
[๋ฐฑ์ค/C++] 1013. Contact (0) | 2021.10.26 |
[๋ฐฑ์ค/Python] 7579. ์ฑ (0) | 2021.10.12 |
[๋ฐฑ์ค/Python] 20040. ์ฌ์ดํด ๊ฒ์ (0) | 2021.10.12 |