문제
- 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우
- 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.
- 단 반복횟수가 1인 경우 생략합니다.
입력
- 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
- 첫 줄에 압축된 문자열을 출력한다.
입출력 예제
풀이 방식을 정리해보자.
메소드 구현으로 바로 넘어가보자.
- 입력받은 문자열에 빈 문자를 더한다.
그 이유는 i와 i+1 을 이용해서 앞뒤 문자열을 비교할건데, 맨 마지막 문자와 비교할 문자를 만들어주기 위해서이다.
AB 라는 문자가 있을 때, B와 비교할 뒤에 문자가 없기 때문에 임의로 빈 문자를 넣어주는 것이다.
- cnt라는 변수를 1로 초기화한다.
cnt는 중복된 수를 넣어서 결과에 출력하기 위한 변수인데, 중복된 수가 없으면 갯수를 출력하지 않기 때문에 1로 초기화하는 것이다.
- 0부터 문자열의 길이-1까지 도는 for문을 작성한다.
맨 마지막은 빈 문자이기 때문에 -1까지로 범위를 잡아준다.
- i와 i+1 즉, 앞뒤 문자가 동일한지 확인하고, 동일하면 cnt 값을 1 더해준다.
- 앞뒤 문자가 동일하지 않다면 결과값에 해당 문자를 출력한다.
- cnt가 1 초과일 경우에는 숫자를 출력하고 cnt를 1로 초기화한다.
'중복한 문자 + 중복 갯수' 의 형태로 출력해야하므로 중복된 문자가 없으면 해당 문자를 출력해야 한다.
단, 이전에 중복된 문자가 여러개였고, 그 다음으로 중복된 문자가 없을 때에는 갯수를 출력하고 cnt를 1로 초기화한다.
수행 결과를 확인한다.
해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.
'알고리즘 > 인프런' 카테고리의 다른 글
섹션 2. Array(1, 2차원 배열)_1. 큰 수 출력하기 (0) | 2022.09.01 |
---|---|
섹션 1. String(문자열)_12. 암호 (2) | 2022.08.22 |
섹션 1. String(문자열)_10. 가장 짧은 문자거리 (2) | 2022.08.22 |
섹션 1. String(문자열)_9. 숫자만 추출 (0) | 2022.08.21 |
섹션 1. String(문자열)_8. 유효한 펠린드롬 (0) | 2022.08.21 |