반응형
📌강의 정리
문자열의 개수가 문자옆에 쓰여져서 압축하는 문제이다.
s[i]와 s[i+1]을 비교하는데 cnt는 항상 1개있으니까 cnt=1로 해야한다.
반복을 하면서 달라지면 문자를 넣어주고 cnt를 넣어준다.
그 이후 cnt를 1로 초기화 해준다.
반복하면서 cnt가 1이면 cnt는 넣어주지 않는다.
마지막에서는 비교할게 없으므로 빈 문자를 하나 넣어야 한다.
코드 짤때 주의할 점은 포문의 한계값을 정할때 s.length-1을 해야한다는 점이다.
이제 if로 cnt가 1보다 클때만 cnt를 String(cnt)로 추가해준다.
📌느낀점
나랑 푼방식은 같지만 세세한점이 달랐다.
나는 마지막에서 비교할때 undefined로 사용했지만 강사님은 따로 빈문자를 넣어 좀 더 확실하게 하였고 그래서 반복횟수도 -1이 되었다.
또한 cnt를 넣어줄때도 숫자가 아닌 String으로 확실하게 넣어야 한다.
세세한 디테일을 잘 살려야겠다.
//나의 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer="";
let cnt = 1;
for(let i=0;i<s.length;i++){
if(s[i] === s[i+1]){
cnt++;
}
else{
answer+=s[i];
if(cnt !== 1) answer+=cnt;
cnt=1;
}
}
return answer;
}
let str="KKHSSSSSSSE";
console.log(solution(str));
</script>
</body>
</html>
//강사님 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer="";
let cnt=1;
s=s+" ";
for(let i=0; i<s.length-1; i++){
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));
</script>
</body>
</html>
반응형
'JS 알고리즘 문제풀이 > 섹션 3. 문자열 탐색' 카테고리의 다른 글
4.가장 짧은 문자거리 (0) | 2022.01.13 |
---|---|
3.숫자만 추출 (0) | 2022.01.13 |
2.유효한 팰린드롬 (0) | 2022.01.13 |
1.회문 문자열 (0) | 2022.01.13 |