20번

nacSeo (낙서)·2022년 12월 15일
0

DailyCoding

목록 보기
20/28

문자열을 입력받아 3개 이상 연속되는 문자가 있을 때, 연속 구간을 반복 횟수와 문자로 조합한 형태로 압축한 문자열을 반환하는 문제였다.

문자열을 순회하며 조건문을 통해 i번째 요소와 i+1번째 요소를 비교하며 풀어봤는데 풀리지 않았다 ,, 결국 구글링의 도움을 받기로 했다.

먼저, 연속되는 문자를 기록하기 위해 처음 str.charAt(0)으로 초기화한 char타입 변수(before)를 선언해주고, 문자 반복 횟수를 저장할 int타입 변수(count)를 1(회)로 선언해준다. 그리고 결과를 담을 문자열 result를 선언해주면 되겠다. 여기서 빼먹지 않아야할 부분은 마지막 부분이 연속된 문자열일 경우를 대비해 str에 더미 문자 ' '를 추가해준다는 것이다.

입력받은 문자열 str을 순회하며 연속되는 문자(before)와 str.charAt(i)가 같을 경우 count++을 시켜준다. 다른 문자일 경우, count가 3 이상(3회 이상)인 경우 result에 count와 before을 담아준다. 3이상이 아닌 경우는 그냥 count의 수만큼 result에 담아주면 되겠다.
식이 끝날 때 before는 str.charAt(i)로, count는 다시 1로 초기화시켜준다.

※) 자바 11에서 지원하는 String.repeat 메소드를 활용하면 더 간단히 작성이 가능하다고 한다.
result = result + Character.toString(before).repeat(count);

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글