본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 16171 : 나는 친구가 적다 (Small)

반응형

https://www.acmicpc.net/problem/16171

 

16171번: 나는 친구가 적다 (Small)

첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 100) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만 이루어진 키워드 문자열 K가 주

www.acmicpc.net

구현, 문자열 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

문자열 s, k를 선언 후 입력받습니다. '0' ~ '9'까지 문자열 제거를 위한 map 변수 filteringMap을 선언 후 값을 저장해줍니다.

📔 풀이과정

'0' ~ '9'까지의 문자를 제거해 원래 문자열을 반환하는 함수 getFilteredString을 수행합니다. 수행 뒤 반환값은 s에 다시 저장합니다.

📔 정답출력

find함수를 수행해 s안에 k가 있다면 1을 그렇지 않다면 0을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
string s, k;
map <char, int> filteringMap;

string getFilteredString(){
    string filteredString;
    for(int i = 0; i < s.size(); i++)
        if(!filteringMap[s[i]]) 
            filteredString += s[i];
    return filteredString;
}

int main(){
    cin >> s >> k;
    for(int i = 0; i <= 9; i++) filteringMap[i + '0'] = 1;
    s = getFilteredString();
    if(s.find(k) != string::npos) cout << 1;
    else cout << 0;
}