문제 링크 : https://www.acmicpc.net/problem/16171
문제
친구가 적은 성민이는 수업에 결석해도 시험이나 과제에 대한 정보를 제대로 얻을 수 없었다. F 학점을 받을 위기까지 아슬아슬하게 결석일 수를 유지하던 성민이는, 어느 날 갑자기 영문도 모른 채 쪽지시험을 보게 되었다!
갑작스러운 쪽지 시험으로 마음이 급해진 성민이는 매직아이를 사용해 벼락치기를 하기로 한다.
성민이가 듣는 과목의 교과서는, 알파벳 소문자(a-z)와 알파벳 대문자(A-Z)로만 이루어져 있다. 성민이가 교과서에서 찾고자 하는 키워드도 역시 알파벳 소문자와 대문자로만 이루어져 있다. 하지만, 성민이에겐 큰 문제가 생겼다. 결석한 날의 수업 내용을 친구에게 빌려 필기를 하던 중, 교과서에 숫자(0-9)를 적어버린 것이다.
키워드를 찾기 힘들어 패닉에 빠진 성민이는 몇 안 되는 친구인 당신에게 도움을 요청했다. 성민이를 도와, 교과서에서 성민이가 찾고자 하는 키워드의 존재 여부를 알려주자.
입력
첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 100) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만 이루어진 키워드 문자열 K가 주어진다. (1 ≤ |K| ≤ 100).
단, 입력으로 들어오는 키워드 문자열 K의 길이는, 교과서의 문자열 S보다 짧거나 같다.
출력
첫 번째 줄에 성민이가 찾고자 하는 키워드가 문자열 내에 존재하면 1, 존재하지 않으면 0을 출력한다.
접근 방법
입력 받은 문자열을 하나씩 따져가면서 해당 문자에서 '0'을 빼서 int 형으로 바꿔본다.
바꾼 수가 0~9 사이이면 패스하고, 아니라면 string removedNum에 해당 문자를 붙인다.
removedStr.find()를 사용해서 부분 문자열의 포함 여부를 알 수 있다.
참고로 포함 되었을 때 find()는 removedStr 중 부분 문자열이 포함된 첫 인덱스를 리턴한다.
ex)
removedStr = "abbc";
string s = "bb"
int result = removedStr.find(s); //result = 1
#include <iostream>
#include <string>
using namespace std;
int main(){
string str, str2;
cin >> str >> str2;
string removedStr = "";
for(int i = 0; i<str.length(); i++){
if(str[i] -'0' >= 0 && str[i] - '0' <=9) continue;
removedStr.push_back(str[i]);
}
if(removedStr.find(str2) == string::npos){ //없으면
cout << 0;
}else cout << 1;
return 0;
}
'Algorithm(BOJ) > String' 카테고리의 다른 글
[C++] 백준 20154번 - 이 구역의 승자는 누구야? (문자열) (0) | 2021.08.16 |
---|---|
[C++] 백준 10798번 - 세로 읽기 (문자열) (0) | 2021.08.16 |
[C++] 백준 9046번 - 복호화 (문자열) (0) | 2021.08.16 |
[C++] 백준 20437번 - 문자열 게임 2 (벡터 배열) (0) | 2021.07.09 |
[C++] 백준 16916번 - 부분 문자열 (KMP 알고리즘, Failure Function) (0) | 2021.07.09 |