프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 문자열 바꿔서 찾기(Java)

Sigfriede 2023. 5. 2. 01:10

  문제 설명

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

 

  제한사항

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

 

  입출력 예

myString pat result
"ABBAA" "AABB" 1
"ABAB" "ABAB" 0
import java.lang.StringBuilder;
class Solution {
    public int solution(String myString, String pat) {
        StringBuilder sb = new StringBuilder();
        int answer = 0;
        for (int i = 0; i < myString.length(); i++) {
            if (myString.charAt(i) == 'A') {
                sb.append("B");
            } else {
                sb.append("A");
            }
        }
        if (sb.toString().contains(pat)) {
            answer = 1;
        }
        return answer;
    }
}

  StringBuilder를 생성합니다. for문이 myString의 길이만큼 순회합니다. if문에서 만약 myString의 문자가 A와 같다면 sb 변수에 B를, 아니라면 A를 추가합니다. 이는 문자열이 A 또는 B로만 이루어진 문자열이기 때문에 가능합니다. 만약 이 제한사항이 없다면 조건을 추가해야할 수 있습니다.

  for문과 if문을 통해 만들어낸 sb 변수가 pat과 동일한지 알아볼 차례입니다. StringBuilder로 만들어진 변수는 String과 다르므로 반드시 toString 메소드를 이용하여 문자열로 바꿔주어야만 오류가 발생하지 않습니다. 과정을 거친 후, contains 메소드를 이용해 sb 변수 안에 pat 문자열이 포함되어 있는지 확인합니다. 만약 조건을 충족한다면 answer에 1을 할당합니다. 조건을 충족하지 않는다면, 처음에 answer가 0으로 초기화되고 있으므로 별도로 조건을 작성하지 않아도 0을 반환할 것입니다.