728x90
문제
문자열 압축입니다.
QQQLLLLEEWQ 라는 문자가 들어오면
Q3L4E2WQ 라는 결과 값이 나와야 합니다.
소스 코드
import java.util.*;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String s = sc.next() + " ";
String result = "";
int cnt = 1;
for(int i=0; i<s.length()-1; i++){
if(s.charAt(i) == s.charAt(i+1)){
cnt++;
}else{
result += s.charAt(i);
if(cnt > 1){
result += Integer.toString(cnt);
}
cnt = 1;
}
}
System.out.println(result);
}
}
해설
문자열 길이 만큼 반복합니다.
문자의 개수를 카운트 하기 위한 변수 cnt를 선언합니다.
cnt는 1로 초기화 합니다.
i번째 문자와 i+1번째 문자와 비교해서 같으면 cnt를 1 더해줍니다.
다르다면 결과를 출력할 String 변수에 해당 문자를 더해주고 cnt가 1보다 크면 cnt를 String으로 바꾸어 더해줍니다.
그 후 cnt 를 1로 다시 초기화 시킵니다.
주의사항
i+1를 검사하기 때문에 마지막 문자를 검사할 때 에러가 발생합니다.
그러니 마지막 문자 검사를 위해 처음 문자열에 " " 빈 문자를 더해줍니다.
그러고 반복문에서 length() 까지가 아닌 length()-1까지만 반복합니다.
728x90
'알고리즘 with JAVA' 카테고리의 다른 글
JAVA 소수 구하기 - 에라토스테네스의 체 (0) | 2021.08.08 |
---|---|
파보나치 수열 - Java 간단한 풀이 (0) | 2021.08.07 |
가장 짧은 문자의 거리 값 찾는 알고리즘 - 자바 (0) | 2021.06.07 |
자바 문자열 뒤집어서 출력하기 (0) | 2021.05.30 |
백준 1181번 단어 정렬 - 자바 스트림 활용 (0) | 2021.05.29 |