[JAVA] 11. 문자열 압축

2021. 4. 15. 19:51
728x90

설명

 

알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는

문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.

단 반복횟수가 1인 경우 생략합니다.

 

예시 입력 1 

KKHSSSSSSSE

 

예시 출력 1

K2HS7E

 

풀이

 

import java.util.*;

public class Main  {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        // 마지막 문자가 저장 될수 있도록 문자열 빈킨 하나를 더준다.
        String input = in.next() + " ";
        String answer = "";

        int count = 1;
        char tmp = ' ';
        for (int i=0; i<input.length(); i++){
            char c = input.charAt(i);
            if(i == 0){
                answer += c;
                tmp = input.charAt(0);
            }
            else if( c != tmp){
                if( count != 1){
                    answer += count;
                }
                answer += c;
                tmp = c;
                count = 1;
            }else{
                count ++;
            }

        }

        System.out.println(answer);


    }
}

 

 

다른 풀이

 

import java.util.*;

public class Main  {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        // 마지막 문자가 저장 될수 있도록 문자열 빈킨 하나를 더준다.
        String input = in.next() + " ";
        String answer = "";

        int count = 1;

        for (int i=0; i<input.length()-1; i++){

            if(input.charAt(i) == input.charAt(i+1)){
                count ++;
            }else{
                answer += input.charAt(i);
                if(count > 1) {
                    answer += count;
                    count =1;
                }
            }
        }

        System.out.println(answer);


    }
}
728x90

'알고리즘 > JAVA' 카테고리의 다른 글

[JAVA] 13. 큰 수 출력하기  (0) 2021.04.20
[JAVA] 12. 암호(replace(), parseInt(string, 2))  (0) 2021.04.15
[JAVA] 10. 가장 짧은 문자거리  (0) 2021.04.15
[JAVA] 9. 숫자만 추출  (0) 2021.04.14
[JAVA] 8. 유효한 팰린드롬  (0) 2021.04.14

BELATED ARTICLES

more