문제
해결방법
조건에 맞게 문자열을 분리하고 분리된 횟수를 찾는 문제
처음 읽은 글자와 다른 글자의 수가 서로 일치될 때 분리를 해야한다.
예를 들어 "aaabbaccccabba" 의 경우 a가 기준이 되어서 aaabbacc 일때 a의 개수가 4개이고 a를 제외한 bbcc가 4개여서 이 타이밍에 분리가 된다.
즉 기준 문자와 다른 문자 수가 일치가 되지않으면 계속 분리하지않고 진행이 된다.
아까 위의 예시로 추가적으로 설명을 작성하면 aaabb인 상태에서는 a의 개수가 3개이고 a를 제외한 bb는 2개여서 분리되지 않고 진행이 된 것이다.
이를 이용해서 코드를 작성했다.
또 기준 문자와 다른 문자가 일치하지 않는 상태에서 종료가 된다면 분리를 해주는게 또 다른 조건이라서 마지막에 조건문을 추가해주었다.
코드
class Solution {
public int solution(String s) {
int answer = 0;
// 기준 문자
char stWord = s.charAt(0);
int stCnt = 1;
// 다른 문자
int otherCnt = 0;
for (int i = 1; i < s.length(); i++) {
char word = s.charAt(i);
if (stWord == word) stCnt++;
else otherCnt++;
// 일치하면 분리
if (stCnt == otherCnt) {
answer++;
// 추가로 탐색이 가능하다면 값 초기화
if (s.length() > i + 1) {
stCnt = 1;
otherCnt = 0;
stWord = s.charAt(++i);
}
}
}
// 횟수가 다른 상태에서 종료됬을 때도 분리
if (stCnt != otherCnt) answer++;
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[JAVA] Programmers : 등산코스 정하기 (0) | 2022.09.07 |
---|---|
[JAVA] Programmers : 배달 (0) | 2022.05.02 |
[JAVA] Programmers : 피로도 (0) | 2022.05.02 |
[JAVA] 행렬 테두리 회전하기 (0) | 2021.05.03 |
[JAVA] 광고 삽입 (0) | 2021.05.01 |