본문 바로가기

알고리즘

JS | A를 #으로 바꾸기

❓ 대문자로 이루어진 영단어가 입력되면 단어에 'A'를 모두 '#'으로 바꾸어 출력하시오.

 

 

        function solution(s) {
            let answer="";
            for(let x of s){
                console.log(x);
            }
            return answer;
        }

        let str="BANANA";
        console.log(solution(str));

먼저 str 변수에 문자열을 입력하고

solution에 s로 받는다.

그리고 for문을 사용할건데

x변수를 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));

if문을 사용해서

x가 'A'일때 answer옆에 #을 붙여주는 식을쓰고

A가 아니라면 그냥 x를 출력하는 식을 쓴다.

 

answer를 출력해보면,

이렇게 출력이 된다.

 

 

 

다른 방법으로는 replace가 있다.

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

            let str = "BANANA";
            console.log(solution(str));

answer에 s를 얕은 복사를 하고

s를 replace해서 A를 #으로 바꾸는 정규식을 작성한다.

이때 콘솔로그를 보면

 

이런식으로 처음 A만 바뀌는 것을 볼 수 있다.

 

 

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

            let str = "BANANA";
            console.log(solution(str));

/A/옆에 g를 (글로벌) 작성하면

모든 A가 바뀐다.

 

 

그런데 answer는 바뀌어있지 않다.

 

왜냐하면 문자열은 주소가 복사되는 것이 아니라

값이 복사되는 것이다.

그래서 answer자체가 복사된것이 아니라

값이 복사돼서 들어간 것이기때문에

answer는 변동이 없는 것이다.

 

         function solution(s) {
                let answer = s;
                answer=answer.replace(/A/g, '#');
                return answer;
            }

            let str = "BANANA";
            console.log(solution(str));

그래서 s대신 answer를 직접 바꿔주고 리턴을 해야한다.

 

그러면 이렇게 원하는 값으로 출력되는 것을 볼 수 있다.

 

 

'알고리즘' 카테고리의 다른 글

JS | 대문자 찾기  (0) 2021.09.14
JS | 문자 찾기  (0) 2021.09.02
JS | 일곱 난쟁이 찾아내기  (0) 2021.08.30
JS | 10부제 위반 차량 출력하기  (0) 2021.08.23
JS | 홀수값 구해서 더하기 / 홀수 중 최솟값  (0) 2021.08.19