[프로그래머스-기초] rny_string

JiEun·2023년 5월 23일
0

코테/코플릿

목록 보기
17/56

rny_string

문제 설명

'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

1 ≤ rny_string의 길이 ≤ 100
rny_string은 영소문자로만 이루어져 있습니다.

입출력 예

rny_stringresult
"masterpiece""rnasterpiece"
"programmers""prograrnrners"
"jerry""jerry"
"burn""burn"

입출력 예 설명

입출력 예 #1

예제 1번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.

rny_stringmasterpiece
resultrnasterpiece

따라서 "rnasterpiece"를 return 합니다.

입출력 예 #2

예제 2번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.

rny_stringprogrammers
resultprograrnrners

따라서 "prograrnrners"를 return 합니다.

입출력 예 #3

예제 3번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "jerry"를 return 합니다.
입출력 예 #4

예제 4번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "burn"를 return 합니다.

💻 내가 작성한 코드

function solution(rny_string) {
   let arr = rny_string.split("")
   let result = []
   for(let i in arr){
       if(arr[i] === "m"){
           result.push("rn")
       }else if(arr[i] !== "m"){
           result.push(arr[i])
       }
   }
   return result.join("")
}

문자열을 배열로 반환하고 for문을 사용해 조건에 맞춰 result에 담고 반환해 주었다.

🛠️ 리팩토링 하기

function solution(rny_string) {
   let arr = rny_string.split("")   
   return arr.map((el) => el === "m" ? "rn" : el).join("")
}

map() 메소드와 삼항 연산자를 작성해 리팩토링 했다.

💻 다른 사람이 작성한 코드

function solution(rny_string) {
    return rny_string.replaceAll(/m/g, "rn");
}

replaceAll() 와 정규 표현식을 사용해 가지고 왔다.

replaceAll()?

string.replaceAll(searchValue, replaceValue)
  • searchValue: 기존 패턴 또는 문자열
  • replaceValue: 기존 문자열에서 변경 될 패턴 또는 문자열

문자열에서 searchValue를 찾아 replaceValue로 변경해 새로운 문자열을 반환한다.

/m/g?

정규 표현식이다. 문자열에서 패턴을 매칭하고 검색 또는 대체를 수행하는데 사용되는 표현식

  • / : 정규 표현식의 시작과 끝을 나타내는 구분 기호
  • m : 'm'이라는 문자를 매칭하는 패턴
  • g : 전역 검색을 수행하는 플래그, 문자열에서 해당 패턴과 일치하는 모든 부분을 찾는다.(생략시 첫 번째로 일치하는 부분만 찾는다.)

📍 마치며

아직 모르는 메소드들이 많은 거 같다.

이렇게 하나씩 코팅 테스트를 풀어보면서
새롭게 알게된 메소드를 정리해 두고 두고 보는게 좋은 거 같다.

참고
chat GPT

profile
💻 프론트엔드를 목표로 성장 중! (알아봤던 내용 등을 정리하기)

0개의 댓글