-
[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를 반환해준다.
반응형'Java 알고리즘 문제 > 자바(Java) 알고리즘 문제풀이 입문' 카테고리의 다른 글
[JAVA] 알고리즘 문제 - 보이는 학생 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 암호 해독하기 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 유효한 팰린드롬 (1) 2023.05.30 [JAVA] 알고리즘 문제 - 회문 문자열 (0) 2023.05.30 [Java] 알고리즘 - 중복된 문자 제거 (1) 2023.05.17