[c++] 백준 9996, 한국이 그리울 땐 서버에 접속하지

김현섭·2023년 7월 4일
1

[C++] 백준

목록 보기
10/36

백준 9996

🌲 문제 요약

알파벳 소문자와 별표 한 개로 이루어진 패턴이 주어졌을 때, 입력받은 각각의 파일 이름과 패턴의 일치 여부를 확인하는 문제.

🌲 문제 풀이

패턴 pat의 구성 정보를 확인하고, pos에 별표 위치를 저장한 뒤, substr을 이용해 별표 이전의 문자열과 이후의 문자열을 presuf에 각각 나누어 저장했다.

입력받은 문자열의 일부와 패턴의 일치 여부에 따라, 일치한다면 "DA", 일치하지 않다면 "NE"를 출력했다.

🌲 주의

pre.size()suf.size()의 합이 s.size()보다 큰 경우에는 문자열과 패턴이 일치할 수 없다는 점에 주의하자.

🌲 코드

#include <bits/stdc++.h>

using namespace std;
int N;
string pat, pre, suf, s;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	
	cin >> N;
	cin >> pat;
	int pos = pat.find("*"); // 패턴 속 별표의 위치 확인
	pre = pat.substr(0, pos); // 별표 이전 문자열
	suf = pat.substr(pos + 1); // 별표 이후 문자열
	
	for (int i = 0; i < N; i++) {
		cin >> s;
		if (pre.size() + suf.size() > s.size()) cout << "NE" << '\n';
		else {
			if (pre == s.substr(0, pre.size()) && suf == s.substr(s.size() - suf.size())) {
				cout << "DA" << '\n';
			}
			else cout << "NE" << '\n';
		}
	}
	
	return 0;
}
profile
오롯이 밤길을 달래는 별에게로

0개의 댓글