ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 알고리즘 문제 문자열 압축
    Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 8. 9. 10:04
    반응형

    문자열 압축

    설명

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

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

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

     

    입력

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

     

    출력

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

     

     

    입력예시 

    KKHSSSSSE

    출력예시

    K2HS5E

    public class Main {
     
    	public String test(String str) {
    		
    		
    		String A = str + " "; //마지막 문자까지 돌아야하므로 빈 문자열 하나 추가 
    		String B ="";
    		int cnt = 1;
    		
    		for(int i=0; i<A.length()-1; i++) {
    			if(A.charAt(i) == A.charAt(i+1)) {
    				cnt++;
    			}else {
    				B +=A.charAt(i);
    				if(cnt != 1) {
    					B +=String.valueOf(cnt);
    					cnt = 1;
    				}
    			}
    		}
    		
    		
    		return B;
    	}
    	
    	public static void main(String[] args){
    		Main t = new Main();
    		Scanner kb = new Scanner(System.in);
    		String str = kb.next();
    		System.out.println(t.test(str));
    		
        }
    }

    실행결과

    KKHSSSSSE
    K2HS5E


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

    KKHSSSSSE 와 같은 문자열 입력을 받는다.

     

    그리고 우리는 test 메서드에서 입력받은 문자열을 매개 변수로 받아온다. 

    		String A = str + " "; //마지막 문자까지 돌아야하므로 빈 문자열 하나 추가 
    		String B ="";
    		int cnt = 1;

    문자열 for문을 돌며 문자열 그리고 다음 문자열까지 확인을 하기 위해 입력받아온 문자에 " " 공백을 추가 해준다.

    K K H S S S S S E  

    그리고 같은 문자열들이 몇개인지 카운트 하기 위한 cnt를 설정해둔다. 

    		for(int i=0; i<A.length()-1; i++) {
    			if(A.charAt(i) == A.charAt(i+1)) {
    				cnt++;
    			}else {
    				B +=A.charAt(i);
    				if(cnt != 1) {
    					B +=String.valueOf(cnt);
    					cnt = 1;
    				}
    			}
    		}

    반복문을 통해 입력받은 문자열을 탐색한다. A.charAt(i) 와 A.charAt(i+1)이 같다면 cnt를 증가 시키고, 

    만약 연속되는 문자가 같지 않는 경우라면 B의 문자열에 A를 저장해주고, cnt가 1이 아닌경우 cnt도 추가적으로 저장해준다.  그러고 난 후 문자열 B를 반환해준다. 

    반응형

    댓글

Designed by Tistory.