오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 String Q11_문자열 압축 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 String Q11_문자열 압축

chan_96 2022. 2. 4. 23:59
728x90
설명

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

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

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


입력

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


출력

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



예시 입력1


예시 출력

KKHSSSSSSSE K2HS7E

예시 입력2


예시 출력

KSTTTSEEKFKKKDJJGG KST3SE2KFK3DJ2G2

코드

내가 입력한 코드

package String;

import java.util.Scanner;

public class Q11 {
	public String solution(String str) {
		String answer = "";
		
		int i = 0;
		int cnt = 1;
		while(i<str.length()) {
			cnt = 1;
			
			answer += Character.toString(str.charAt(i));
			for (int j = 1+i; j < str.length(); j++) {
				if(str.charAt(i)==str.charAt(j)) {
					cnt++;
				}else {
					break;					
				}
			}// end of for
			
			if(cnt >=2) {
				i += cnt;
				answer += cnt;
			}else {
				i++;				
			}
		}// end of while
		
		return answer;
	}
	
	
	public static void main(String[] args) {
		Q11 T = new Q11();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
}

 




해설 코드

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));
	}
}

 

 

풀이 및 정리 

-
728x90
Comments