
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
오직 문자 A와 B만 포함된 문자열이 주어진다. 과제는 인접한 문자가 일치하지 않도록 문자열로 바꾸는 것이다. 여기서, 문자열에서 0개 또는 더 많은 문자를 삭제할 수 있다. 과제는 삭제에 필요한 최소 수를 찾는 것이다.
s = AABAAB
위치 0과 3의 A를 제거하면 2개를 삭제해서 s = ABAB를 만들 수 있다.
alternatingCharacters 함수를 완성해라.
alternatingCharacters 함수는 아래와 같은 매개변수를 가지고 있다.
새로운 문자열을 만들어서 매개변수로 받아온 문자열과 새로 만든 문자열의 길이의 차를 구해서 문제를 해결했다.
첫 번째 문자를 담을 temp를 선언하고 s의 0번째 인덱스의 문자를 할당한다.
char temp = s.charAt(0);
그리고 StringBuilder을 생성하고 temp를 추가한다.
StringBuilder sb = new StringBuilder();
sb.append(temp);
반복문을 통해 인덱스 1부터 s를 순회하고 이때 temp와 현재 문자를 비교해서 다르면 temp에 할당하고 sb에 추가한다.
for(int i = 1; i < s.length(); i++){
if(temp != s.charAt(i)){
temp = s.charAt(i);
sb.append(temp);
}
}
마지막으로 s의 길이와 sb의 길이의 차를 반환한다.
return s.length() - sb.length();
public static int alternatingCharacters(String s) {
char temp = s.charAt(0);
StringBuilder sb = new StringBuilder();
sb.append(temp);
for(int i = 1; i < s.length(); i++){
if(temp != s.charAt(i)){
temp = s.charAt(i);
sb.append(temp);
}
}
return s.length() - sb.length();
}