프로그래머스 : 문자열 바꿔서 찾기

Digeut·2024년 4월 17일
0

프로그래머스

목록 보기
160/164

❔문제설명

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

🤔아이디어

replace를 사용하면 될거같은데, 한번에 두개를 몽땅 바꾸는건 안될거고... 그럼 앞에 바꾼 A가 다시 B로 바뀌게 되지 않나??


아이디어를 chatGPT에 물어봤다. 임시문자열로 변환을 시켜주면되는구나

❌틀린코드

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        if(myString.contains("A")){
            myString.replace("A","temp");
        }else if(myString.contains("B")){
            myString.replace("B","A");
        }
        myString.replace("temp","B");
        
        if(myString.contains(pat)){
            answer = 1;
        } else {
            answer = 0;
        }
        return answer;
    }
}

🙄오류

왜 반대의 대답이 나오는거지?
전혀 저장이 되지 않고있는데

replace
return : a string derived from this string by replacing every occurrence of oldChar with newChar.

참조 : https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replace-char-char-

replace는 지금 주어진 문자열이 아니라 바꾸고 난 후에 새로운 문자열을 반환하기때문에 저장이 되야한다! 그래서 전혀 반영이 되지 않고 있었다.

💡코드풀이

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
    
        String tempMyString = myString.replace("A","temp");
        String tempMyString2 = tempMyString.replace("B","A");
        String resultMyString = tempMyString2.replace("temp","B");
        
        if(resultMyString.contains(pat)){
            answer = 1;
        } else {
            answer = 0;
        }
        return answer;
    }
}
profile
개발자가 될 거야!

0개의 댓글