CODE KATA #13

loopbackseal·2021년 2월 6일
0

CODE KATA 🧗‍♂️

목록 보기
13/32
post-thumbnail

A를 #으로

대문자로 이루어진 영어단어가 입력되면 단어에 포함된 ‘A'를 모두 ’#‘으로 바꾸어 출력하는 프로그램을 작성하세요.

나의 풀이

            function solution(s){
                let answer=s;
                answer = answer.replace(/A/g,"#");
                return answer;
            }
            let str="BANANA";
            console.log(solution(str));

정답 풀이와 같다

다른 풀이

            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));

배운 것

정규 표현식

replace()의 인자는 2개로,특정 대상해당 대상으로 바꾸도록 하는 함수이다. 하지만, python의 replaceAll()과 달리, javascript의 replace()replaceAll() 함수가 따로 존재하지 않는다. 따라서 [MDN 정규 표현식 문서] (https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D)를 참고하여 정규 표현식을 통해 모든 대상을 의미하는 g를 통해 replaceAll()의 기능을 하도록 했다.

문자열의 얕은 복사?

앞선 문제 풀이에서 얕은 복사라는 개념을 알았다. 따라서 이번 문제에서도, let answer = s;를 통해 얕은 복사를 했다고 생각했는데, answer = answer.replace(/A/g,"#");s = s.replacE(/A/g,"#");로 바꾸어 보았을 때, 아무런 변화 없이 "BANANA"가 출력되었다. 문자열의 경우, Number, Undefined와 같은 원시값 (String) 이기 때문에 주소 값을 복사하는 얕은 복사의 개념이 존재하지 않는다.

profile
CAU Business Administration

0개의 댓글