반응형
📌강의 정리
함수에서 s로 받는다.
answer = ""; 로 하면 문자열이라고 선언 할 수 있다.
for x of s 를 하고 if x==='A'를 해서 맞으면 answer+='#' 를 누적하고
아니라면 그냥 x값을 answer +=x; 를 통해 그냥 넘어가면 끝이다.
다른 방법도 있다. replace라는 함수를 쓰는 것이다.
s=s.replace(/A/, '#')이면 모든 A가 #으로 바뀌지 않는다
/A/는 처음 만나는 A만 바뀌는거고 /A/g 를 해야 모든 값이 바뀌고
let answer=s;는 문자열이기에 얕은복사가 아니라 깊은 복사가 된다.
따라서 answer=answer.replace를 해서 직접 바꿔주어야 한다.
배열 또한 slice를 하면 깊은 복사를 할 수 있지만 그건 나중에 알아보자.
📌느낀점
replace말고 누적을 사용해서 풀 수 있다는 점에 정말 놀랐다.
그냥 answer를 문자열로 선언하고 하나씩 만들어가는것이다.
심지어 코드도 간결하다...
지금까지는 숫자로 이루어진 배열만 사용했는데 문자열에 관해서도 잘 알아볼 필요가 있다.
계속해서 나오는 얕은복사와 깊은 복사에 대해서 잘 알아두자.
//나의 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer = s;
for(let i=0; i<s.length; i++){
if(s[i] === 'A') answer = answer.replace('A', '#');
}
return answer;
}
let str = 'BANANA';
console.log(solution(str));
</script>
</body>
</html>
//강사님 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer="";
for(let x of s){
if(x=='A') answer+='#';
else answer+=x;
}
return answer;
}
let str="BANANA";
console.log(solution(str));
</script>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer=s;
answer=answer.replace(/A/g, "#");
return answer;
}
let str="BANANA";
console.log(solution(str));
</script>
</body>
</html>
반응형
'JS 알고리즘 문제풀이 > 섹션 1. 기본문제 풀이' 카테고리의 다른 글
11.대문자 찾기 (0) | 2022.01.12 |
---|---|
10.문자 찾기 (0) | 2022.01.11 |
8.일곱난쟁이 (0) | 2022.01.11 |
7.10부제 (0) | 2022.01.11 |
6.홀수 (0) | 2022.01.11 |