첫 할인 태그만 바꾸기

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

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

상품 안내 문장에서 처음 등장하는 SALE 태그 하나만 EVENT로 바꿔 반환하세요.

오늘의 메서드

  • String.replace()

메서드 설명

replace()는 문자열에서 찾고 싶은 부분을 다른 문자열로 바꾼 새 문자열을 반환하는 메서드입니다.

첫 번째 인수로 문자열을 넣으면, 같은 내용이 여러 번 있어도 처음 발견한 한 곳만 바뀝니다. 그래서 “딱 한 번만 바꾸기”를 연습하기에 좋습니다.

기본 문법

string.replace(searchValue, replaceValue)
  • searchValue: 찾을 문자열
  • replaceValue: 바꿔 넣을 문자열
  • 반환값: 일부가 바뀐 새 문자열

사용 예시

"SALE now, SALE later".replace("SALE", "EVENT");
// "EVENT now, SALE later"

첫 번째 SALEEVENT로 바뀌고, 뒤에 있는 SALE은 그대로 남습니다.

주의할 점

  • replace()는 원본 문자열을 바꾸지 않고 새 문자열을 반환합니다.
  • 첫 번째 인수로 문자열을 넣으면 첫 번째 일치 항목만 바꿉니다.
  • 대소문자를 구분하므로 saleSALE과 다르게 처리됩니다.
  • 문장 안에 찾는 문자열이 없으면 원래 문자열과 같은 내용이 반환됩니다.

제한사항

  • message는 길이 1 이상 200 이하의 문자열입니다.
  • 바꿀 대상은 정확히 대문자 SALE입니다.
  • SALE이 여러 번 등장해도 처음 등장한 하나만 EVENT로 바꿉니다.
  • SALE이 없으면 입력 문자열을 그대로 반환합니다.
  • 반환값은 변환된 문자열입니다.

예시

  • 입력: message = "SALE today only" -> 출력: "EVENT today only"
  • 입력: message = "SALE now, SALE later" -> 출력: "EVENT now, SALE later"
  • 입력: message = "No discount today" -> 출력: "No discount today"
  • 입력: message = "preSALE and SALE" -> 출력: "preEVENT and SALE"

힌트

  • SALE을 찾는 값으로, EVENT를 바꿀 값으로 넣어 보세요.
  • 여러 번 등장하는지 직접 셀 필요는 없습니다.
  • 오늘의 메서드는 기본적으로 첫 번째 일치 항목만 바꿉니다.

해설

이 문제는 문자열에서 특정 단어를 한 번만 치환하는 기본 흐름을 익히는 문제입니다.

String.replace()에 찾을 문자열과 바꿀 문자열을 차례대로 넣으면 됩니다.

function replaceFirstSaleTag(message) {
  return message.replace("SALE", "EVENT");
}

예를 들어 "SALE now, SALE later"에서는 앞쪽 SALE을 먼저 찾습니다. 문자열 인수를 사용한 replace()는 첫 번째 일치 항목만 바꾸므로 결과는 "EVENT now, SALE later"가 됩니다.

모든 SALE을 바꾸는 문제가 아니라 처음 하나만 바꾸는 문제이기 때문에 replaceAll()이 아니라 replace()가 더 적합합니다.

코드 작성

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

JavaScript 에디터 로딩 중...

커스텀 테스트

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

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

실행 결과

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

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

댓글

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