차시
23/07/04 1차시
23/07/05 2차시
필요 개념
문자열 라이브러리 : find, substr, reverse
해설 코드와 내 코드 비교
반례(패턴: ab*ab, 파일이름: ab)
=> 사이즈 체크 필요
=> 보통 반례 기준은 사이즈, 최대, 최소로 판단
문자열 라이브러리 사용 여부
해설 코드
#include<bits/stdc++.h>
using namespace std;
int n;
string s, ori_s, pre, suf;
int main(){
cin >> n;
cin >> ori_s;
int pos = ori_s.find('*');
pre = ori_s.substr(0, pos);
suf = ori_s.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;
}
내 코드 1차(성공)
#include <iostream>
using namespace std;
int main(){
string s, s1, s2, temp;
bool chk = false;
bool skip = false;
int n;
cin >> n;
cin >> s;
// 패턴 쪼개기
for(int i = 0; i < s.length(); i++){
if(s[i] == '*'){
chk = true;
continue;
}
if(!chk)
s1 += s[i];
else
s2 += s[i];
}
// prefix, suffix
int s1len = s1.length();
int s2len = s2.length();
// 테스트 케이스
for(int i = 0; i < n; i++){
cin >> temp;
int templen = temp.length();
skip = false;
if(s1len + s2len > templen){
cout << "NE" << endl;
continue;
}
// 앞 패턴 비교
if(s1len > 0){
for(int j = 0; j < s1len; j++){
if(s1[j] != temp[j]){
cout << "NE" << endl;
skip = true;
break;
}
}
}
if(skip)
continue;
// 뒤 패턴 비교
if(s2len > 0){
for(int j = 0; j < s2len; j++){
if(s2[s2len-j-1] != temp[templen-j-1]){
cout << "NE" << endl;
skip = true;
break;
}
}
}
if(skip)
continue;
cout << "DA" << endl;
}
}
내 코드 2차(실패)
#include <iostream>
using namespace std;
int main(){
int n;
string s, temp, prefix, suffix;
cin >> n;
cin >> s;
int pos = s.find('*');
prefix = s.substr(0, pos);
suffix = s.substr(pos+1);
for(int i = 0; i < n; i++){
cin >> temp;
if(prefix.size() + suffix.size() >= temp.size()){
cout << "NE" << endl;
continue;
}
if(prefix == temp.substr(0, prefix.size() && suffix == temp.substr(temp.size()-suffix.size())))
cout << "DA" << endl;
else cout << "NE" << endl;
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
9375 패션왕 신해빈 (0) | 2023.07.05 |
---|---|
2559 수열 (0) | 2023.07.05 |
1159 농구 경기 (0) | 2023.07.04 |
2979 트럭 주차 (0) | 2023.07.04 |