메시지 속 금지어 모두 가리기

자바스크립트 코딩테스트 문제로 string-replacement-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

js-basic easy string-replacement-methods 함수명: maskBannedWord 제한 시간: 200ms

문자열 안에 있는 특정 금지어를 모두 찾아 ***로 바꾸는 문제입니다.

오늘의 메서드

  • String.replaceAll()

메서드 설명

replaceAll()은 문자열 안에서 찾고 싶은 내용을 모두 다른 문자열로 바꿔 새 문자열을 반환합니다. 원본 문자열은 바뀌지 않고, 결과만 새로 만들어집니다.

기본 문법

message.replaceAll(target, replacement)

사용 예시

"sale sale today".replaceAll("sale", "***");
// "*** *** today"

"spam-free zone".replaceAll("spam", "***");
// "***-free zone"

주의할 점

  • replaceAll()모든 일치 항목을 바꿉니다.
  • 대소문자를 자동으로 무시하지 않습니다. 예를 들어 "Sale""sale"은 다르게 봅니다.
  • 원본 문자열 자체를 수정하지 않고 새 문자열을 반환합니다.
  • 찾는 금지어가 없으면 원래 문자열과 같은 내용이 반환됩니다.

제한사항

  • message의 길이는 1 이상 1,000 이하입니다.
  • bannedWord의 길이는 1 이상 20 이하입니다.
  • messagebannedWord는 영문 소문자, 공백, 하이픈(-)으로만 이루어집니다.
  • bannedWord가 나타나는 모든 위치를 ***로 바꾼 결과를 반환합니다.
  • 대소문자는 구분합니다.

예시

  • 입력: message = "sale sale today", bannedWord = "sale" → 출력: "*** *** today"
  • 입력: message = "spam-free zone", bannedWord = "spam" → 출력: "***-free zone"
  • 입력: message = "clean message", bannedWord = "ad" → 출력: "clean message"

힌트

  • 첫 번째만 바꾸는 것이 아니라 같은 금지어가 여러 번 나와도 모두 바꿔야 합니다.
  • 문자열 메서드 하나로 전체 치환을 처리할 수 있습니다.
  • 바꿀 문자열은 항상 ***입니다.

해설

이 문제는 문자열 안의 특정 단어를 한 번만 찾는 것이 아니라 모든 등장 위치를 바꾸는 연습입니다.

String.replaceAll()을 사용하면 금지어를 찾을 때마다 ***로 바꾼 새 문자열을 바로 얻을 수 있습니다.

예를 들어 message"sale sale today"이고 bannedWord"sale"이면:

"sale sale today".replaceAll("sale", "***")

결과는 "*** *** today"입니다.

풀이 함수는 아주 간단합니다.

function maskBannedWord(message, bannedWord) {
  return message.replaceAll(bannedWord, "***");
}

이 풀이가 좋은 이유는 다음과 같습니다.

  • 문자열을 직접 잘라 붙이지 않아도 됩니다.
  • 같은 금지어가 여러 번 나와도 한 번에 처리됩니다.
  • 금지어가 없을 때도 별도 예외 처리 없이 원래 문자열이 그대로 반환됩니다.

이 문제의 학습 포인트는 replaceAll()첫 번째만이 아니라 전체를 치환하는 메서드라는 점입니다. 문자열 정리, 마스킹, 문구 치환 같은 작업에서 자주 쓰입니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.