코딩테스트/프로그래머스 기초 트레이닝

[Javascript] l로 만들기

dev_swH 2023. 6. 5. 13:51

문제 설명

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

 

문자열은 반복작업이 안 되니까 배열로 바꿔야겠다.

➡ 문자열간 크기 비교를 어떻게 하지?

➡ MDN에서 String 객체 문서를 읽다가 localeCompare() 메소드를 발견.

 

그렇게 해서 나온 나의 풀이 :

function solution(myString) {
    return [...myString].map((str) => str.localeCompare('l') >= 0 ? str : "l").join("");
}

 

다른 사람들의 풀이를 보니 해결 방향 자체는 나와 비슷한 사람이 많았으나 방식은 생각보다 제각각이었다.

아래는 배우고 싶은 다른 사람의 풀이 :

const solution = myString => myString.replace(/[a-k]/g,'l')
function solution(myString) {
    return [...myString].map((v) => v < 'l' ? 'l' : v).join('');
}

 

문자열끼리도 크기 비교로 참/거짓 결과가 나온다는 걸 완전히 잊어버리고 있었다!!!

그리고 역시 제일 깔끔한 코드는 정규표현식을 이용하는 코드인데

정규표현식이 어려워서 아직 문법을 익히지 못했다...

정규식을 쓸 수 있냐 없냐로 활용할 수 있는 범위가 달라지니까 역시 시간을 들여서 제대로 공부해야겠다.