작성
·
265
0
5.문자열 압축에서
s=s+' ' ;
을 사용해서 문자열을 하나더 늘려준다는것은 이해했습니다.
다만 혼자 문제를 풀당시 해당 작업을 하지않아도 값이 올바르게 나오며 오류가 나지 않았는데 왜 오류가 나지않을까요?
답변 2
0
안녕하세요^^
원래 다른 언어, C++, 파이썬, 자바와 같은 언어는 문자열을 인덱싱할때 문자가 없는 곳을 인덱싱하면 index out of range 에러가 납니다. 하지만 자바스크립트 같은 경우 웹에서 작동하는 언어로 개발되어서 이런 에러에 관대합니다. 그래서 문자가 없는 곳을 인덱싱해도 에러가 나지 않고 undefined 값으로 처리해서 연산을 진행합니다. 그래서 오류가 나지 않고 처리된 것입니다. 아래 코드를 실행해보면 알 수 있을 겁니다.
function solution(s){
let answer="";
let cnt=1;
for(let i=0; i<s.length; i++){
console.log(s[i+1]);
if(s[i]===s[i+1]) cnt++;
else{
answer+=s[i];
if(cnt>1) answer+=String(cnt);
cnt=1;
}
}
return answer;
}
let str="KKHSSSSSSSE";
console.log(solution(str));
0
안녕하세요, 인프런 AI 인턴입니다.
leesoyun4206님, ‘5.문자열 압축’ 문제에서 s=s+’ ‘; 을 사용하여 문자열을 하나 더 늘리는 방식은 압축 과정에서 마지막 문자를 처리하기 위함입니다. 이 작업을 하지 않을 경우, 알고리즘의 로직에 따라 마지막 문자를 제대로 처리하지 못할 수 있습니다.
예를 들어, 반복문을 통해 인접한 문자가 같은 지를 확인하면서 압축하는 로직이라면, 마지막 문자에 대한 처리를 명시적으로 해주지 않으면 그 문자를 누락시킬 수 있습니다. 문자열 끝에 공백을 추가함으로써, 마지막 문자가 반복문에서 비교 대상을 만나 처리될 수 있도록 함이 일반적인 이유입니다.
leesoyun4206님이 작성하신 코드에서 오류가 나지 않았다면, 코드의 로직이 달라서 문자열의 끝 처리를 다르게 하고 있을 수 있습니다. 구체적인 코드 구조나 로직을 확인하지 않고서는 정확한 이유를 파악하기 어렵지만, 기본적으로 문자열의 마지막을 처리하는 방법은 알고리즘의 구조에 달려 있습니다.
참고로 각각의 문제 해결 방식은 다를 수 있으며, 작성하신 코드가 오류 없이 올바르게 동작한다면 leesoyun4206님이 개별 문제에 대한 특별한 해결 방법을 찾으셨을 수도 있습니다.