✔ 문자열 나누기
문제 분석하기
문자 하나를 가져와서 앞과 동일할 경우 동일하다는 인덱스를 증가시키고, 다르다면 동일하지 않다는 인덱스를 증가시키도록 함
이후 두 인덱스의 갯수가 같을 경우 문자열의 개수를 증가시킨 후, 다음 문자 하나를 가져와서 위를 반복
손으로 풀어보기
- 문자 하나를 가져오기
- 문자와 동일한지 다른지 체크
- 동일할 경우 동일하다는 인덱스를 뜻하는 same을 증가
- 동일하지 않을 경우 동일하지 않다는 인덱스를 뜻하는 another을 증가
- same과 another의 갯수가 동일할 경우 문자열의 개수를 증가시키도록 함
- 위 과정을 s의 길이만큼 반복
- 최종 문자열의 개수를 반환
슈도코드 작성하기
s(문자열)
answer(분해한 문자열의 개수)
x(문자열의 글자) = s.charAt(0)
same(동일 인덱스)
another(비동일 인덱스)
for(i -> s의 길이만큼) {
if(same의 갯수와 another의 갯수가 동일하다면) {
answer 증가
x = s.charAt(i) 갱신
}
if(s.charAt(i)가 x와 동일하다면)
same 증가
else
another 증가
}
answer 반환
코드 구현하기
/**
* 140108) 문자열_나누기
*/
public class L066_140108 {
// s(문자열)
public int solution(String s) {
// answer(분해한 문자열의 개수)
int answer = 0;
// x(문자열의 글자)
char x = s.charAt(0);
// same(동일 인덱스)
int same = 0;
// another(비동일 인덱스)
int another = 0;
for (int i = 0; i < s.length(); i++) {
// same의 갯수와 another의 갯수가 동일하다면
if (same == another) {
// answer 증가
answer++;
// x 갱신
x = s.charAt(i);
}
// s.charAt(i)가 x와 동일하다면
if (s.charAt(i) == x)
// same 증가
same++;
// 동일하지 않다면
else
// another 증가
another++;
}
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L066_140108 solution = new L066_140108();
String s = "banana";
int result = solution.solution(s);
System.out.println(result);
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[136798] 기사단원의 무기 (0) | 2023.12.11 |
---|---|
[138477] 명예의 전당 (1) (0) | 2023.12.09 |
[43164] 여행경로 (0) | 2023.12.05 |
[87694] 아이템 줍기 (0) | 2023.12.04 |
[43163] 단어 변환 (0) | 2023.12.03 |