Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 String Q11_문자열 압축 본문
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
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 Array Q01_큰 수 출력하기 (0) | 2022.02.07 |
---|---|
자바 알고리즘 문제 풀이 String Q12_암호 (0) | 2022.02.06 |
자바 알고리즘 문제 풀이 String Q10_가장 짧은 문자거리 (0) | 2022.02.03 |
자바 알고리즘 문제 풀이 String Q09_숫자만 추출 (0) | 2022.02.02 |
자바 알고리즘 문제 풀이 String Q08_유효한 팰린드롬 (0) | 2022.01.31 |
Comments