[basics] A를 #으로
자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.
📋 문제
대문자로 이루어진 영단어가 입력되면 단어에 포함된 'A'를 모두 '#'으로 바꾸어 출력한다.
👉 입력
첫번째 줄에 문자열이 입력된다.
👈 출력
첫번째 줄에 바뀐 단어를 출력한다.
💡 사용된 개념
String.replace()
어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환한다.
패턴은 문자열이나 정규식이 될 수 있다.
RegExp
- ignoreCase(i) : 문자열의 대소문자를 구분하지 않는다.
- global(g) : 정규표현식이 문자열 내에서 가능한 모든 경우에 일치하는지 판별한다.
String.replace()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/replace
String.prototype.replace() - JavaScript | MDN
replace() 메서드는 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환합니다. 그 패턴은 문자열이나 정규식(RegExp)이 될 수 있으며, 교체 문자열은 문자열이나 모든 매치
developer.mozilla.org
RegExp
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions
정규 표현식 - JavaScript | MDN
정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다. 이 패턴들은 RegExp의 exec 메소드와 test 메소드 ,
developer.mozilla.org
📝 풀이
<script>
function solution(s) {
let answer = "";
for (const a of s) {
if (a === 'A') answer += '#';
else answer += a;
}
return answer;
}
let str = "BANANA";
console.log(solution(str));
</script>
for of문을 통해 주어진 문자열을 순회하며 answer에 한 글자씩 추가해 나가다 'A'라는 문자를 만나면 '#'을 추가한다.
순회가 끝나면 answer를 출력한다.
다른 방법으로는 String.replace()를 사용하는 방법이 있다.
<script>
function solution(s) {
let answer = "";
answer = s.replace(/A/ig, "#")
return answer;
}
let str = "BANANA";
console.log(solution(str));
</script>
String.replace()를 사용해 'A'라는 문자를 '#'으로 바꾼다. 이때 옵션으로 i와 g를 주었다.
사실 입력이 모두 대문자이기 때문에 대소문자를 구별하지 않는다는 i 옵션은 필요없지만 g 옵션은 주지 않으면 첫번째 'A'만 '#'으로 바뀌고 나머지는 바뀌지 않는다.