String(스트링) 11. 문자열 압축
* 사용 언어 : JAVA
* Inflearn의 자바(Java)알고리즘 문제풀이 : 코딩테스트 대비 강의내용 정리
1. 문제
한 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하여 문자열 출력
단, 모든 문자열은 알파벳 대문자로 주어지고 반복횟수가 1인 경우는 생략
// 입력
KKHSSSSSSSE
// 출력
K2HS7E
2. 풀이
입력받은 문자열을 첫번째 문자부터 바로 옆의 문자를 반복하여 비교한다. 주어진 문자열의 길이만큼 비교하면 마지막 문자를 비교할 경우 다음 문자가 없어 index out of bound 오류가 발생한다. 입력받은 문자열에 마지막에 공백문자를 추가하고 입력받은 문자열의 길이에서 1을 뺀 횟수동안 반복한다.
같은 문자면 count를 1 증가시킨다. 같지않으면 해당 인덱스의 문자를 answer 변수에 넣어주고 count가 1보다 클경우 answer에 넣어주고 count를 다시 1로 초기화 시킨다.
count를 1로 초기화한 이유는 읽히는 문자는 무조건 1번 나왔기 때문에 1로 초기화한다.
3. 코드
public class Main {
public String solution(String str) {
String answer = "";
str = str + " ";
int count = 1;
str.
for (int i = 0; i < str.length()-1; i++) {
if (str.charAt(i) == str.charAt(i+1)) {
count++;
} else {
answer += str.charAt(i);
if (count > 1) {
answer += Integer.toString(count);
}
count = 1;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(T.solution(str));
}
}
4. Keword
- String
- charAt(int index)
'Algorithm' 카테고리의 다른 글
[자바 알고리즘 문제풀이] String 10. 문자 거리 (0) | 2022.05.11 |
---|---|
[자바 알고리즘 문제풀이] Array 02. 보이는 학생 (0) | 2022.05.10 |
[자바 알고리즘 문제풀이] Array 01. 큰 수 출력하기 (0) | 2022.05.09 |
[자바 알고리즘 문제풀이] String 09. 숫자만 추출 (0) | 2022.03.21 |
[자바 알고리즘 문제풀이] String 08. 유효한 팰린드룸 (0) | 2022.03.07 |