[문자열 압축]

2024. 11. 27. 20:19카테고리 없음

 

 


 

 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;


public class Main {

    public void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        StringBuilder sb = new StringBuilder();

        //charAt(i) = charAt(i+1) 같으면
        for(int i=0; i <=str.length();i++){
            sb.append(str.charAt(i)); 
           if(i==str.length()-1){  
               break;
           }else{
               if(str.charAt(i) == str.charAt(i+1)) {
                   int repeatedCount =1;
                   while(str.charAt(i) == str.charAt(i+1)){
                       repeatedCount++;
                       i++;
                   }
                   sb.append(repeatedCount);
               }
           }
        }

        System.out.println(sb);
    }

    public static void main(String[] args) throws Exception{
        new Main().solution();
    }
}

-> 이렇게 실했했더니 런타임 에러가 뜸

조금 더 간단한 방식을 생각해 봐야 한다!

 

 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

    public void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        StringBuilder sb = new StringBuilder();
        int cnt=1;
        for(int i=0; i < str.length()-1;i++){
            if(str.charAt(i)==str.charAt(i+1)) cnt++;
            else {
                sb.append(str.charAt(i));
                if(cnt>1) sb.append(String.valueOf(cnt));
            }
        }

        System.out.println(sb);
    }

    public static void main(String[] args) throws Exception{
        new Main().solution();
    }
}