반응형
문제 3-5번
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시 오. 단 반복횟수가 1인 경우 생략합니다.
🍄 입력설명
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
🍄 출력설명
첫 줄에 압축된 문자열을 출력한다.
🍄 입력예제 1
KKHSSSSSSSE
🍄 출력예제 1
K2HS7E
정답 코드
- s[i] === s[i+1] 일때, count를 1씩 증가한다. 계속 증가하다가, 달라질 때 answer에 알파벳을 넣는다. 그리고 count가 1일때가 아닌 경우에만 count를 그 옆에 추가하고 count를 다시 1로 리셋한다.( count가 초기에 0이 아니라 1부터 시작하는것이 중요하다)
마지막 문자열의 경우 비교대상이 없으니, 맨 끝에 빈 문자열을 넣어준다. for문에서는 맨 마지막 문자를 비교할 필요가 없어 length에서 1을 빼준다.
function solution(s) {
let answer = "";
let count = 1;
s = s + " ";
for (let i = 0; i < s.length - 1; i++) {
if (s[i] === s[i + 1]) count++;
else {
answer += s[i];
if (count > 1) answer += String(count);
count = 1;
}
}
return answer;
}
let str = "KKHSSSSSSSE";
console.log(solution(str));
//출력 K2HS7E
728x90
반응형
'알고리즘' 카테고리의 다른 글
[JS] 알고리즘 기초 정복 4-2번_뒤집은 소수 (0) | 2021.07.16 |
---|---|
[JS] 알고리즘 기초 정복 4-1번_자릿수의 합 (0) | 2021.07.16 |
[JS] 알고리즘 기초 정복 3-4번_가장 짧은 문자거리 (0) | 2021.07.15 |
[JS] 알고리즘 기초 정복 3-3번_숫자만 추출 (0) | 2021.07.15 |
[JS] 알고리즘 기초 정복 3-2번_유효한 팰린드롬 (0) | 2021.07.15 |