JS 알고리즘 문제풀이/섹션 1. 기본문제 풀이

9.A를 #으로

crab. 2022. 1. 11. 15:48
반응형

📌강의 정리

함수에서 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