문제 소개
이번 문제는 문자열을 인자로 하나 받아, 문자열에 포함된 모든 'i'는 '1'로, 'o'는 '0'으로 바꾼 새로운 문자열을 반환하는 함수를 작성하는 것입니다.
전형적인 반복문(for loop) 활용 문제로, 문자열의 각 인덱스를 순회하면서 조건에 맞는 문자를 치환하고 새로운 문자열을 만들어가는 방식으로 해결할 수 있습니다.
for 루프를 이용한 풀이
먼저 빈 문자열을 준비한 뒤, 원본 문자열의 길이만큼 반복하면서 각 문자를 검사합니다. 문자가 'i'라면 '1'을, 'o'라면 '0'을 결과 문자열에 추가하고, 그 외의 문자는 그대로 추가합니다.
const string = 'Hello, is it raining in Amsterdam?';
const validate = (str) => {
let validatedString = '';
for (let i = 0; i < str.length; i++) {
if (str[i] === 'i') {
validatedString += '1';
} else if (str[i] === 'o') {
validatedString += '0';
} else {
validatedString += str[i];
}
}
return validatedString;
};
console.log(validate(string));위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
Hell0, 1s 1t ra1n1ng 1n Amsterdam?
출력 결과를 보면 원본 문자열의 모든 'i'가 '1'로, 'o'가 '0'으로 정확히 치환된 것을 확인할 수 있습니다.
정규식(RegExp)을 이용한 더 간결한 풀이
반복문 대신 자바스크립트의 replace() 메서드와 정규식을 사용하면 코드를 한 줄로 줄일 수 있습니다.
const validate = (str) => str.replace(/i/g, '1').replace(/o/g, '0');
console.log(validate('Hello, is it raining in Amsterdam?'));정규식 플래그 /g(global)를 사용하면 문자열 전체에서 일치하는 모든 문자를 한 번에 치환할 수 있어, 성능과 가독성 면에서 유리합니다.
마무리
이처럼 문자열 치환 문제는 기본적인 반복문 연습용으로도 좋고, 실무에서는 정규식과 replace()를 조합해 더욱 효율적으로 처리할 수 있습니다. 상황에 맞는 방법을 선택해 활용해 보시기 바랍니다.