https://school.programmers.co.kr/learn/courses/30/lessons/140108
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자열 나누기 문제 Java로 풀이하겠습니다.


이 문제는 문자열을 분해하는 규칙을 적용하여 문자열을 분해하고, 분해한 문자열의 개수를 반환하는 함수를 작성해야 합니다.
다음과 같이 문제 풀이하였습니다.
class Solution {
public int solution(String s) {
int cnt = 0;
int current = 0;
char firstChar = s.charAt(0);
char[] charArray = s.toCharArray();
for (int i = 0; i < charArray.length; i++) {
if (firstChar == charArray[i]) {
current++;
} else {
current--;
}
if (current == 0 || i==charArray.length-1) {
cnt++;
if (i + 1 < charArray.length) {
firstChar = charArray[i + 1];
}
}
}
return cnt;
}
}
- 먼저, 첫 번째 문자를 firstChar 변수에 저장해 줍니다.
- 문자열을 탐색하면서 현재 문자와 비교합니다.
- firstChar 변수와 같은 문자라면 current 변수를 증가합니다.
- firstChar 변수와 다른 문자라면 current 변수를 감소시킵니다. - current 값이 0이 되거나 더 이상 처리할 문자가 없는 경우(i == charArray.length -1)에는 분리할 문자열의 개수를 증가시킵니다.
- 문자열의 개수를 증가시킨 후 다음 문자를 현재 문자로 업데이트합니다.
이러한 과정을 문자열의 끝까지 반복하여 분리된 문자열의 개수를 반환합니다.
다른 좋은 방안이 있다면 댓글로 의견 부탁드립니다.

'Algorithm > CodingTest' 카테고리의 다른 글
| [Programmers] Level.1 2016년(Java) (0) | 2023.10.19 |
|---|---|
| [Programmers] Level.1 크기가 작은 부분 문자열(Java) (2) | 2023.10.19 |
| [Programmers] Level1. 둘만의 암호(Java) (2) | 2023.10.15 |
| [Programmers] Level.1 카드 뭉치(Java) (0) | 2023.10.15 |
| [Programmers] Level.1 추억 점수(Java) (0) | 2023.10.13 |