728x90
출처
https://www.acmicpc.net/problem/9996
내 풀이
더보기
더보기
#include<iostream>
using namespace std;
int N = 0;
string pattern;
string input;
int main()
{
cin >> N;
cin >> pattern;
int star = pattern.find('*');
string front = pattern.substr(0, star);
string back = pattern.substr(star + 1, pattern.length() - 1);
for (int i = 0; i < N; i++)
{
cin >> input;
if (input.length() >= front.length() + back.length())
{
string input_front = input.substr(0, front.length());
string input_back = input.substr(input.length() - back.length(), input.length() - 1);
if (input_front == front && input_back == back)
{
cout << "DA" << endl;;
}
else cout << "NE" << endl;
}
else cout << "NE" << endl;;
}
}
해설
✅ 문제 요약
한국 서버의 파일 리스트에서 특정 패턴과 일치하는 파일 이름을 찾는 문제다.
패턴은 소문자 + 별표(*) 하나로 구성되며, *는 소문자 문자열 0개 이상으로 대체 가능하다.
✅ 핵심 아이디어
- 별표 *를 기준으로 패턴을 앞뒤로 나눈다
- 입력된 문자열이 패턴보다 짧으면 무조건 불일치
- 입력 문자열이
- 패턴의 접두사로 시작하고
- 패턴의 접미사로 끝나면
→ "DA" 출력
아니라면 "NE" 출력
느낀점
string.find()와 substr() 함수를 익혀서 패턴 매칭에 활용해 봄
'코딩테스트 공부 2025 Start > 1주차 (구현)' 카테고리의 다른 글
1620) 나는야 포켓몬 마스터 이다솜 (C++) (0) | 2025.04.10 |
---|---|
2559) 수열 (C++) (0) | 2025.04.09 |
11655) ROT13 (0) | 2025.04.05 |
1159) 농구 경기 (문자열) (0) | 2025.03.30 |
10988) 팰린드롬인지 확인하기 (reverse, 투포인터) (0) | 2025.03.30 |