문제
문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.
제한사항
- 1 ≤ myString 의 길이 ≤ 100
- 1 ≤ pat 의 길이 ≤ 10
- myString 과 pat 는 문자 "A"와 "B"로만 이루어진 문자열입니다.
class Solution {
public int solution(String myString, String pat) {
// myString = myString.replace("A", "a").replace("B", "A").replace("a", "B");
// return myString.contains(pat) ? 1 : 0;
StringBuilder str = new StringBuilder();
for(int i = 0; i < myString.length(); i++) {
if(myString.charAt(i) == 'A') {
str.append("B");
}
else if(myString.charAt(i) == 'B') {
str.append("A");
}
}
String result = str.toString();
return result.contains(pat) ? 1 : 0;
}
}
주석처리 된 코드처럼 replace를 잘 활용해서 A와 B를 swap 하는 방식은 좋은 방법인지 모르겠다. 그저 코테를 해결하기 위해 쓰는 방식인지 뭔가 애매해서 일단 나는 StringBuilder 객체를 만들어서 해결하는 쪽을 택했다.
그렇게 길지 않으니까 replace를 활용하는 게 더 가독성이 좋을려나...?
출처
https://school.programmers.co.kr/learn/courses/30/lessons/181864