자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.
📋 문제
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자의 바로 오른쪽에 반복 횟수를 표기한다.
위와 같은 방법으로 주어진 문자열을 압축해 출력한다.
단, 반복 횟수가 1인 경우 생략한다.
👉 입력
길이가 100을 넘지 않는 문자열이 주어진다.
👈 출력
압축된 문자열을 출력한다.
📝 풀이
function solution(s) {
let answer = "";
let count = 1;
for (let i = 0; i < s.length; i++) {
if (s[i] === s[i + 1]) {
count++;
}
else {
answer += s[i] + `${count}`
count = 1;
}
}
return answer.replace(/[1]/ig, '');
}
let str = "KKHSSSSSSSE";
console.log(solution(str));
주어진 문자열 s를 순회한다.
이때 현재 인덱스의 문자와 그 다음 인덱스의 문자가 같다면 해당 문자가 반복되는 것이기 때문에 반복 횟수를 저장하기 위한 변수인 count에 1을 더해준다.
만약 같지 않다면 해당 문자의 반복이 끝난 것이기 때문에 정답을 저장할 문자열 answer에 현재 인덱스의 문자를 넣고 count도 문자열로 형 변환을 해 넣어준다.
이후 반복 횟수가 1인 것은 생략하기 때문에 정답 문자열 answer에서 1을 찾아 1이면 빈 문자열로 바꿔준 후 리턴한다.
'Algorithm > JavaScript' 카테고리의 다른 글
[완전탐색] 뒤집은 소수 (0) | 2021.12.13 |
---|---|
[완전탐색] 자릿수의 합 (0) | 2021.12.13 |
[문자열탐색] 가장 짧은 문자거리 (0) | 2021.12.10 |
[문자열탐색] 숫자만 추출 (0) | 2021.12.10 |
[문자열탐색] 유효한 팰린드롬 (0) | 2021.12.10 |
댓글