기초코딩테스트 - String 문자열 압축

고장난 고양이·2022년 3월 30일
0

codingtest-java

목록 보기
14/21

문제

설명

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

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

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

입력

첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.

출력

첫 줄에 압축된 문자열을 출력한다.

예시 입력 1

KKHSSSSSSSE

예시 출력 1

K2HS7E

예시 입력 2

KSTTTSEEKFKKKDJJGG

예시 출력 2

KST3SE2KFK3DJ2G2

코드

import java.util.*;
  
public class Main {
  public String solution(String str){
        String answer="";
        char c=' ';
        int count=1;
        for(char x : str.toCharArray()){
            if(x != c){
                if(count>1) answer+=count;
                c=x;
                answer+=x;
                count=1;
            }
            else{
                count++;
            }

        }
        if(count>1) answer+=count;
        
        return answer;
    }

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

받은 문자열을 chararray로 변환하나씩 변환하며 비교한다. 처음 시작하는 문자를 발견하면 일단 새로운 문자열에 넣고 현재 판단하고있는 문자를 c 에다가 넣는다. 그후 개수를 세어가며 연속 2이상인 경우만 새로운 문자열에 추가한다.

참고할 코드

import java.util.*;
class Main {	
	public String solution(String s){
		String answer="";
		s=s+" ";
		int cnt=1;
		for(int i=0; i<s.length()-1; i++){
			if(s.charAt(i)==s.charAt(i+1)) cnt++;
			else{
				answer+=s.charAt(i);
				if(cnt>1) answer+=String.valueOf(cnt);
				cnt=1;
			}
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.println(T.solution(str));
	}
}
profile
개발새발X발일지

0개의 댓글

관련 채용 정보