JAVA 코딩테스트 대비-11. 문자열 압축

리만·2023년 11월 28일

섹션 1. String 문자열 : 문자열 압축

문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 옆에 반복 횟수를 표기하여 출력

💻 강의 코드

class Algorithm {
	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){
		Algorithm T = new Algorithm();
		Scanner kb = new Scanner(System.in);
        String s = kb.next();
        System.out.println(T.solution(s));
    }
}



💻 IntelliJ - Service

@Service
public class StringAlgorithmService{
	 public String stringShorter(String str) {
        String answer = "";
        // 끝까지 검색하기 위해서 str 뒤에 빈 문자 추가
        str = str + " ";
        int count = 1;
        for (int i = 0; i < str.length()-1; i++) {
            // 현재 문자와 그 다음 문자를 비교
            if (str.charAt(i) == str.charAt(i + 1)) {
                count++;
            }else{
                answer += str.charAt(i);
                if (count > 1) {
                    answer += String.valueOf(count);
                }
                count = 1;
            }
        }
        return answer;
    }
}
@Test
@DisplayName("문자열 압축")
    void stringShorter() {
        String str = "KKHSSSSSSSEE";
        String answer = stringAlgorithmService.stringShorter(str);
        System.out.println("result ====> " + answer);
    }
    

💻 결과

💻 NOTE

  • String.valueOf() : String으로 형 변환

출처 : 인프런 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

0개의 댓글