문자열 압축

Seungmin Lim·2022년 2월 5일
0

코딩문제연습

목록 보기
11/63

문제

나의풀이

import java.util.*;

class Main {
		    public String solution(String s) {
		    	String answer = "";
		    	s = s + " ";
		    	int count = 1;
		    	
		    	for(int i=0; i<s.length()-1;i++) {
		    		if(s.charAt(i) == s.charAt(i+1)) count++;
		    		
		    		else{
		    			answer += s.charAt(i);
		    			if(count>1) answer += count;
		    			count = 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));
	}
	
}

풀이방법

먼저, 문자열 s에 빈 문자 " "를 넣어준다. (s = s + " ";)
그리고 count를 1에둬야 한다.
그 이유는 처음 발견된 문자도 count할 때 포함되야 하기 때문.
그 후, for문을 통해 현재 문자와 다음 문자를 비교해서,
같다면 count만 1증가 / 다르다면 answer에 현재 문자를 저장 후
count가 1보다 크다면 저장 아니라면 저장 x

마지막 문자는 뭐가됐든 " "과 비교되기 때문에 else문을 통하게 된다.

핵심키워드

for문을 통해 i 와 i+1을 비교할땐, 빈 문자열을 넣어줌으로써
마지막 문자열의 예외를 처리할수있다.

0개의 댓글