[프로그래머스-기초] l로 만들기

JiEun·2023년 6월 14일
0

코테/코플릿

목록 보기
25/56

l로 만들기

문제 설명

알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.

제한사항

1 ≤ myString ≤ 100,000
myString은 알파벳 소문자로 이루어진 문자열입니다.

입출력 예

myStringresult
"abcdevwxyz""lllllvwxyz"
"jjnnllkkmm""llnnllllmm"

입출력 예 설명

입출력 예 #1
0 ~ 4번 인덱스의 문자 "a","b","c","d","e"는 각각 "l"보다 앞서는 문자입니다. 따라서 "l"로 고쳐줍니다.
그 외의 문자는 모두 "l"보다 앞서지 않는 문자입니다. 따라서 바꾸지 않습니다.
따라서 "lllllvwxyz"을 return 합니다.

입출력 예 #2
0번, 1번, 6번, 7번 인덱스의 문자 "j","j","k","k"는 각각 "l"보다 앞서는 문자입니다. 따라서 "l"로 고쳐줍니다.
그 외의 문자는 모두 "l"보다 앞서지 않는 문자입니다. 따라서 바꾸지 않습니다.
따라서 "llnnllllmm"을 return 합니다.

💻 내가 작성한 코드

function solution(myString) {
   return myString.replaceAll(/[a-k]/g, 'l')
}

이 문제를 보자마자 replaceAll정규 표현식이 생각났다.
/[a-k]/g 는 a부터 k까지 해당 문자열 내에 모든 문자를 검색한다.

💻 다른 사람이 작성한 코드

function solution(myString) {
    return [...myString].map((v) => v < 'l' ? 'l' : v).join('');
}

요소가 l 보다 작으면 l 로 대체하는 것 같다.

여기서 의문은 l은 문자인데 수학적 기호 사용이 되는지 의문이였다.
결론은 문자는 유니코드로 표현되고 비교 연산자를 이용해 알파벳 순서를 비교할 수 있다고 한다.

JavaScript에서 문자열과 문자 간의 비교는 유니코드 값에 기반하여 수행한다.


✏️ 마치며

확실히 코테를 주기적으로 진행하다 보니
문제를 봤을 때 필요한 메서드 등이 생각나게 되는 거 같다.

정규 표현식은 아직 이숙하지 않아 사용 방법을 찾아보면서 진행했지만
익숙해지면 좀 더 간략하게 코드를 작성할 수 있지 않을까 싶다.

또한 JavaScript는 유니코드 값에 기반으로 수행하기에
문자에 수학적 기호를 사용할 수 있다는 점을 알게 되었다.

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

0개의 댓글