개발놀이터

1-11. 문자열 압축 본문

기타/코딩테스트

1-11. 문자열 압축

마늘냄새폴폴 2023. 2. 9. 12:17

package string.CompressionString111.my;

import java.util.Scanner;

public class Main {

    /**
     * -내 풀이-
     * i + 1 까지 넣으면 index 가 초과되어 로직을 추가했는데 괜한 뻘짓이었다.
     *
     * --피드백--
     * 그냥 들어오는 input 에 빈칸 하나 추가하면 되는 것이었다.. 너무 허무..
     */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String input = kb.next();

        System.out.println(solution(input));
    }

    private static String solution(String input) {
        String answer = "";
        int check = 1;

        for (int i = 0; i < input.length(); i++) {  // input.length() = 11 / i + 1 의 최댓값 = 11
            if (i + 1 != input.length()) {
                if (input.charAt(i) == input.charAt(i + 1)) {
                    check++;
                }
                else {
                    if (check != 1) {
                        answer += input.charAt(i) + String.valueOf(check);
                    }
                    else {
                        answer += input.charAt(i);
                    }
                    check = 1;
                }
            }
            else {
                if (check != 1) {
                    answer += input.charAt(i) + String.valueOf(check);
                }
                else {
                    answer += input.charAt(i);
                }
            }
        }

        return answer;
    }
}

 

package string.CompressionString111.teacher;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        System.out.println(solution(str));
    }

    private static String solution(String str) {
        String answer = "";
        str = str + " ";
        int cnt = 1;
        for (int i = 0; i < str.length() - 1; i++) {
            if (str.charAt(i) == str.charAt(i + 1)) {
                cnt++;
            }
            else {
                answer += str.charAt(i);
                if (cnt > 1) {
                    answer += String.valueOf(cnt);
                }
                cnt = 1;
            }
        }
        return answer;
    }
}

 

'기타 > 코딩테스트' 카테고리의 다른 글

1장 문자열 주요 개념 복습 노트  (0) 2023.02.09
1-12. 2진 암호  (0) 2023.02.09
1-10. 가장 짧은 문자 거리  (0) 2023.02.09
1-9. 숫자만 추출  (0) 2023.02.09
1-8. 유효한 회문 문자열  (0) 2023.02.09