작성
·
211
·
수정됨
0
안녕하세요 제가 강의 보기전에 혼자 풀어봤는데
function solution(s) {
let answer = s[0];
let cnt = 1;
for (let i = 1; i < s.length; i++) {
if (s[i] === s[i - 1]) {
cnt++;
continue;
}
if (cnt > 1) {
answer += cnt + s[i];
cnt = 1;
} else {
answer += s[i];
}
}
return answer;
}
let str = "KKHSSSSSSSE";
console.log(solution(str));
저 같은 경우 미리 answer 에 첫번째 글자를 넣어서 시작했고
for 문을 1부터 시작해서 그 전의 값과 비교하는 식으로했는데 이렇게 풀어도되는걸까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
네, 님의 코드는 문자열에서 연속되는 문자를 카운팅하는 올바른 방법 중 하나입니다. 첫 번째 글자를 answer
에 미리 할당하고, 그 다음 인덱스부터 for문을 시작하여 이전의 문자와 비교하는 방식으로 문제를 해결하셨네요. 이러한 접근 방식은 각 문자를 한 번씩만 확인하면서 문제를 효율적으로 해결할 수 있는 장점이 있습니다.
만약에 문자열의 마지막에 있는 연속 문자도 처리하고 싶으시다면 루프가 끝난 후 cnt
의 값이 1보다 큰지 확인하고, 만약 그렇다면 answer
에 추가하는 로직을 넣어야 합니다. 현재 코드에서는 맨 마지막 문자열이 연속될 경우 그 값을 반영하지 않으니, 적절한 처리가 필요합니다.
이외에도 여러 방법으로 문제를 해결할 수 있으나, 중요한 것은 코드가 명확하고, 예상치 못한 입력에 대해서도 정확하게 동작하는지입니다. 코드를 다시 한 번 확인하시고, 모든 경우에 대해 올바르게 동작하는지 테스트해보시길 권장드립니다.