C++/코딩 기초 트레이닝

[C++/프로그래머스] 문자열 바꿔서 찾기

서니션 2023. 12. 13. 19:01
728x90
반응형

문제설명

문자 "A"와 "B"로 이루어진 문자열 myString pat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.


제한사항

  • 1 ≤ myString의 길이 ≤ 100
  • 1 ≤ pat의 길이 ≤ 10
    • myString과 pat는 문자 "A"와 "B"로만 이루어진 문자열입니다.

입출력 예

입출력 예 설명

입출력 예 #1

  • "ABBAA"에서 "A"와 "B"를 서로 바꾸면 "BAABB"입니다. 여기에는 부분문자열 "AABB"가 있기 때문에 1을 return 합니다.

입출력 예 #2

  • "ABAB"에서 "A"와 "B"를 서로 바꾸면 "BABA"입니다. 여기에는 부분문자열 "BABA"가 없기 때문에 0을 return 합니다.

작성코드

#include <string>
#include <vector>

using namespace std;

int solution(string myString, string pat) {
    int answer = 0;
    string newstr="";
    int patSize = pat.size();
    
    // myString에서 A를 찾고 B를 찾아서 replace해주어야함
    for (char& ch : myString)
    {
        if (ch == 'A')
            newstr += 'B';
        else if (ch == 'B')
            newstr += 'A';
        else
            newstr += ch;
    }
    
    int strSize = newstr.size();
    
    for (int i=0; i<=strSize - patSize; ++i)
    {
        if (newstr.substr(i, patSize) == pat)
            answer = 1;
    }
    
    return answer;
}

문제 URL

https://school.programmers.co.kr/learn/courses/30/lessons/181864

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


반응형
728x90

 

728x90
반응형