ezhoon

[인프런] 01-11 문자열 압축 본문

[Java] 인프런 문제풀이/Stirng(문자열)

[인프런] 01-11 문자열 압축

ezhoon 2022. 1. 21. 00:37

문제


  1. 알파벳 대문자로 이루어진 문자열 입력
  2. 같은 문자가 반복되는 문자 바로 오른쪽에 반복 횟수 표기 (단 1인 경우 생략하고 알파벳 출력)
    예시 출력

 

이해


  • charAt(i)!= str.charAt(i+1) 다음 글자와 다른 경우 append(charAt(i)) 값 빈 문자열에 누적하고 false 인경우 cnt를 증가시킨다.
  • 그 후 숫자를 넣어야 하는지 판별해야 하므로 if(cnt > 1) 1 인 경우는 생략하고 true 인 경우 append(cnt) 후 cnt=1 초기화해준다.

⚠️ 주의사항


  • 1은 생략하므로 조건부 만들 때 ' = ' 들어가면 안 되는 것
  • 동일한 문자가 반복되는 경우 문자 + 숫자라는 점 

 

풀이


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

public class Java_01_11 {

    public String solution(String str) {
        StringBuilder sb = new StringBuilder();
        str = str + " ";
        int cnt = 1;

        for (int i = 0; i < str.length()-1; i++) {
            if(str.charAt(i) != str.charAt(i+1)) {
                sb.append(str.charAt(i));
                if (cnt > 1) {
                    sb.append(cnt);
                    cnt = 1;
                }
            }
            else cnt ++;
        }
        return sb.toString();
    }


    public static void main(String[] args) throws IOException {

        Java_01_11 T = new Java_01_11();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        System.out.println(T.solution(str));
    }
}

Comments