[프로그래머스 스쿨] 코딩테스트 연습 기초 - 문자열 바꿔서 찾기

김현정·2025년 3월 5일
0

문제 설명

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

입출력 예 설명

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

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

기본 코드

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        return answer;
    }
}

내가 구현한 코드

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 클래스로 sb 객체를 생성을 한다.
(StringBuilder 클래스는 문자열을 하나씩 모아서 문자열을 만들어주는 클래스이다.)
int answer값을 0으로 초기화를 한 뒤 for문을 활용한다. for문 안에 if문을 통해서 mystring의 한 글자가 'A'랑 같으면 sb 스트링에 "B"를 추가하고 'A'랑 같지 않으면 "A"를 추가한다 또 다음 문자를 돌면서 모든 문자를 변경한다. 그 뒤 다시 if문으로 sb글자를 스트링 타입으로 변환(toString())한 뒤에 pat 문자열과 같으면(contains()) 1을 반환한다.

알게된 점

  1. StringBuilder 클래스는 문자열을 하나씩 모아서 문자열을 만들어주는 클래스이다.
  2. 배열.length는 ()를 안써도 되지만 문자열.length()는 하나의 메서드이기에 사용해줘야한다.
  3. char이 붙어있으면 무조건 ''을 사용해야한다.
  4. 변수.append() 메소드는 문자열을 추가해주는 메소드이다.
  5. 변수.toString()은 String으로 변환해주는 메소드이다.
  6. 변수.reverse()는 해당 문자 전체를 뒤집는 메소드이다.
  7. 변수.setCharAt(int index, String s);는 index 위치의 문자를 s로 변경해주는 메소드

0개의 댓글