
내가 생각했을때 문제에서 원하는부분
문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다.
myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.
내가 이 문제를 보고 생각해본 부분
입력으로 받은 myString의 각 문자를 순차적으로 탐색한다.
탐색 중 문자가 'A'라면 'B'로, 'B'라면 'A'로 교체하여 swapped라는 StringBuilder에 추가한다.
문자열 변환이 완료된 후, 완성된 문자열 swapped.toString()에서 pat라는 문자열이 포함되어 있는지 contains 메서드를 사용하여 확인한다.
포함되어 있을 경우 1을, 그렇지 않으면 0을 반환한다.
코드로 구현
class Solution {
public int solution(String myString, String pat) {
StringBuilder swapped = new StringBuilder();
for (int i = 0; i < myString.length(); i++) {
char c = myString.charAt(i);
if (c == 'A') {
swapped.append('B');
} else {
swapped.append('A');
}
}
if (swapped.toString().contains(pat)) {
return 1;
} else {
return 0;
}
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 문자열 바꿔서 찾기
public class Main81 {
public int solution(String myString, String pat) {
StringBuilder swapped = new StringBuilder();
for (int i = 0; i < myString.length(); i++) {
char c = myString.charAt(i);
if (c == 'A') {
swapped.append('B');
} else {
swapped.append('A');
}
}
if (swapped.toString().contains(pat)) {
return 1;
} else {
return 0;
}
}
public static void main(String[] args) {
Main81 sol = new Main81();
// 테스트 케이스 예시
String myString1 = "ABBAA";
String pat1 = "AABB";
System.out.println(sol.solution(myString1, pat1)); // 1 출력 예상
String myString2 = "ABAB";
String pat2 = "ABAB";
System.out.println(sol.solution(myString2, pat2)); // 0 출력 예상
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.