문자열 바꿔서 찾기

문제 설명

문자 "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

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

※ 2023년 05월 15일 제한사항 및 테스트 케이스가 수정되었습니다. 기존에 제출한 코드가 통과하지 못할 수 있습니다.

 

 

틀림 - 이유 문제 잘못 생각함 , 문제가 쉽다 보니까 그냥 카운트하는거겠지 하고

걍 풀다가 틀림

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        
        String changeString = "";
        
        for(int i = 0; i< myString.length(); i++){
            if(myString.charAt(i) == 'A'){
                changeString += "B";
            }else{
                changeString += "A";
            }    
        }
        
        int startFlag = 0;
        int endSize = changeString.length();
        
        while(endSize > pat.length()+startFlag){
            
            String compareString = changeString.substring(startFlag++, endSize);
            
            if(compareString.contains(pat)){
                answer++;
            }
        }
        
        
        return answer;
    }
}

 

 

수정

일단 builder로 바꿨고, 혹시 메모리 때문에 틀린건지 몰라서

그냥 문자열 처음부터 사이즈 별로 짜른다음에 있으면 1로 돌려주도록 바꿈

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        
        // 문자열을 변환 (A <-> B)
        StringBuilder changeString = new StringBuilder();
        
        for (int i = 0; i < myString.length(); i++) {
            if (myString.charAt(i) == 'A') {
                changeString.append('B');
            } else {
                changeString.append('A');
            }
        }
        
        // 변환된 문자열에서 pat과 일치하는 부분 문자열이 있는지 확인
        for (int i = 0; i <= changeString.length() - pat.length(); i++) {
            String compareString = changeString.substring(i, i + pat.length());
            
            if (compareString.equals(pat)) {
                answer = 1; // pat이 존재하면 1 반환
                break;
            }
        }
        
        return answer;
    }
}

'Coding Test - Java - Programmers' 카테고리의 다른 글

A 강조하기  (0) 2025.03.09
특정한 문자를 대문자로 바꾸기  (0) 2025.03.09
rny_string  (0) 2025.03.09
정수 부분  (0) 2025.03.09
문자열 겹쳐쓰기  (0) 2025.03.09