3주차 · 문자열
보통문자열구현

문자열 압축

문자열 s가 주어져요. 같은 문자가 연속으로 나오는 구간을 문자 + 개수 로 바꾼 문자열을 반환해요.

개수가 1인 구간은 개수를 쓰지 않아요. 예를 들어 "abc""a1b1c1" 이 아니라 "abc" 그대로예요.

연속 구간을 세는 일 자체는 반복문 하나면 되지만, 마지막 구간을 빠뜨리기 쉬워요. 반복문이 끝난 뒤에 한 번 더 기록하거나, 경계를 넘어설 때 기록하도록 조건을 잡아요.

예시

예시 1
예시 2
예시 3

제한 사항

  • 1 ≤ s.length ≤ 100,000
  • s 는 영소문자로만 이루어져요.
조각을 배열에 모았다가 마지막에 한 번만 이어붙여요. 반복문 안에서 result += ... 로 문자열을 계속 새로 만들면 길이가 길어질수록 급격히 느려져요. 자바스크립트는 join(""), 파이썬은 "".join(...) 이에요.
javascript
function compressString(s) {
const parts = [];
let count = 1;
for (let i = 1; i <= s.length; i++) {
if (i < s.length && s[i] === s[i - 1]) {
count++;
continue;
}
parts.push(count === 1 ? s[i - 1] : s[i - 1] + count);
count = 1;
}
return parts.join("");
}
이전 문제애너그램 판별
다음 문제세 수의 합
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.