인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 강의를 보고 문제 해설을 작성해보았습니다.
섹션1. String(문자열)의 11. 문자열 압축 강의편 입니다.
설명
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는
문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.
단 반복횟수가 1인 경우 생략합니다.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
첫 줄에 압축된 문자열을 출력한다.
package org.algorithm.그레이;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 문자열_압축 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
solution(str);
}
public static void solution(String str) {
String ans = "";
str = str + " ";
int cnt = 1;
for(int i=0; i<str.length()-1; i++) {
if(str.charAt(i)==str.charAt(i+1)) cnt++;
else {
ans += str.charAt(i);
if(cnt>1) ans+=String.valueOf(cnt);
cnt=1;
}
}
System.out.println(ans);
}
}
>>해설
| K | K | H | S | S | S | S | S | S | S | E |
반복되는 문자 수 를 저장할 cnt 값을 1로 선언하고
먼저 i번째와 i+1번째 문자를 비교한다.
두 값이 같으면 cnt 값을 1증가 시킨다.
두 값이 다르면 새로운 문자열 ans에 현재 i번째에 있는 문자를 저장하고
cnt 값이 1이상이면 cnt값을 문자열로 변환(String.valueOf(cnt))하여 ans에 저장한다.
그리고 cnt값은 다시 1로 초기화 시켜준다.
최종적으로 ans를 출력시키면서 프로그래밍을 종료한다.
'Computer Science > Algorithm' 카테고리의 다른 글
| [Inflearn] 큰 수 출력하기 (0) | 2022.11.13 |
|---|---|
| [Inflearn] 암호 (0) | 2022.11.13 |
| [Inflearn] 가장 짧은 문자거리 (0) | 2022.11.12 |
| [Inflearn] 숫자만 추출 (0) | 2022.11.05 |
| [Inflearn] 팰린드롬 (0) | 2022.11.05 |