포스트

문자열 바꿔서 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/181864?language=java

문제

  • 문제 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
      import java.util.Scanner;
        
      public class Solution {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              String myString = sc.next();
              String pat = sc.next();
                
              int result = solution(myString, pat);
              System.out.println(result);
          }
        
          public static int solution(String myString, String pat) {
              StringBuilder convertedString = new StringBuilder(myString.length());
        
              // A를 B로, B를 A로 바꾸기
              for (char ch : myString.toCharArray()) {
                  if (ch == 'A') {
                      convertedString.append('B');
                  } else if (ch == 'B') {
                      convertedString.append('A');
                  }
              }
        
              // StringBuilder를 String으로 변환
              String convertedStringStr = convertedString.toString();
        
              // pat이 있는지 확인
              for (int i = 0; i <= convertedStringStr.length() - pat.length(); i++) {
                  if (convertedStringStr.substring(i, i + pat.length()).equals(pat)) { // 변환된 문자열에서 pat과 길이가 같은 부분을 선택
                      return 1;
                  }
              }
        
              return 0;
          }
      }
    
    • 문자열 convertedStringStr의 길이에서 pat의 길이를 뺀 값은, 검사할 수 있는 부분 문자열의 마지막 인덱스를 나타낸다. 만약에 문자열이 “ABBAA”이고, pat이 “AABB”라면, convertedStringStr의 마지막 4개 문자는 “AABB”가 될 것이다. pat을 찾기 위해서는 convertedStringStr.length() - pat.length()까지 길이가 pat과 같은 부분 문자열을 검사해야 한다.
    • equals(pat)pat과 해당 부분 문자열이 정확히 일치하는지를 비교하는 메서드이다. 즉, 변환된 문자열에서 pat과 일치하는 부분이 있는지를 확인한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.