-
[c++] 백준 9996번: 한국이 그리울 땐 서버에 접속하지알고리즘 2022. 5. 20. 18:52
문제풀이
1. 패턴을 * 기준으로 자른다.
2. 입력받은 문자열과 자른 패턴을 비교한다.
예) a*b -> a / b 로 자른 후 입력 받은 문자열 abcd과 비교한다. 패턴 a는 입력받은 문자열 앞과 비교하고 패턴 b는 뒤 문자열과 비교한다.
코드
#include <iostream> #include <vector> #include <sstream> using namespace std; vector<string> split(string input, char delimiter) { vector<string> answer; stringstream ss(input); string temp; while (getline(ss, temp, delimiter)) { answer.push_back(temp); } return answer; } int main() { int n; string str; string pattern; vector<string> temp; cin >> n >> pattern; temp = split(pattern, '*'); for (int i = 0; i < n; i++) { bool check = true; cin >> str; if (str.length() < pattern.size() - 1) { cout << "NE\n"; } else { for (int j = 0; j < temp[0].length(); j++) { if (str[j] != temp[0][j]) check = false; } for (int j = 0; j < temp[1].length(); j++) { if (str[str.length() - temp[1].length() + j] != temp[1][j]) check = false; } if (check) cout << "DA\n"; else cout << "NE\n"; } } return 0; }
※ 입력받은 문자열의 길이가 패턴의 길이보다 짧을 수 있기 때문에 그 경우에 대한 조건문이 필요했음.
'알고리즘' 카테고리의 다른 글
[c++][그리디] 백준 2828번: 사과 담기 게임 (0) 2022.05.29 [c++] 백준 3986번: 좋은 단어 (0) 2022.05.21 [c++] 백준 1620번: 나는야 포켓몬 마스터 이다솜 (0) 2022.05.15 [c++] 백준 1940번: 주몽 (0) 2022.05.15 [c++][구현] 백준 1159번: 농구 경기 (0) 2022.05.15