작성
·
29
0
export default function solution(str) {
let answer = '';
let l = 1;
for (let i = 0; i < str.length; i++) {
if (answer[answer.length - 1] !== str[i]) {
if (l > 1) {
answer += l + str[i];
l = 1;
} else {
answer += str[i];
}
} else {
l++;
}
if (i === str.length - 1 && l > 1) answer += l;
}
return answer;
}
여러 경우에 대해서 대응은 되는거 같은데 괜찮은가요 ?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 류호이님.
질문해주신 문자열 압축 문제에 대한 코드 검토 결과, 제시된 코드는 올바르게 작동할 것으로 보입니다. 이 알고리즘은 연속되는 문자열을 카운트하여 압축하는 방식으로, 구현하신 로직에서는 연속된 문자열의 길이를 변수 l
을 사용하여 카운팅하고, 다음 문자가 연속될 때까지 누적하다가, 연속되지 않는 새로운 문자가 나오면 해당 문자의 누적 횟수를 answer
에 추가하는 방식입니다.
코드의 마지막 부분에서 조건문을 통해 문자열의 마지막까지 도달했을 때 연속된 문자열의 길이를 확인하여 누락 없이 결과에 포함시키고 있습니다. 따라서 다양한 입력 상황에서도 이 로직이 잘 작동할 것으로 판단되며, 시간복잡도도 적절하게 유지됩니다.
추가로 문제를 이해하기 위한 기존의 질문과 답변을 참고하실 수 있도록 관련 URL을 안내해드립니다:
결론적으로, 현재 코드는 여러 경우를 잘 처리할 수 있는 구조로 보여지며, 알고리즘 문제 풀이를 잘 진행하고 계신 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.