요즘 기초를 다지기 위해 lv.0문제를 하루에 여러개씩 루틴처럼 풀고 있는데, 이런 문제에서도 배울 점이 많다는 것을 알았다.
문제는 my_string에서 letter을 제거하고 반환하는 것인데, 나는 이렇게 무식하게 풀었다. 지금 이 답을 구하는 것만은 상관이 없지만 이 로직이 다른 문제에 포함되었을 때는 쓸데없는 시간복잡도를 할애하게 해서 올바른 답을 찾는 데에 방해가 될 것이다.
function solution(my_string, letter) {
var answer = [];
let str = my_string.split('');
for (let i = 0; i<str.length; i++) {
if (str[i] !== letter) {
answer.push(str[i])
}
}
return answer.join('');
}
그래서 다른 분들의 풀이를 확인해봤다.
1. split()
function solution(my_string, letter) {
const answer = my_string.split(letter).join('')
return answer;
}
제일 신박했던 풀인데 split은 어차피 해야하고 아예 letter를 split의 인자로 사용하는 것이다. 가장 효율적인 방식이지 않나 싶다.
2. replaceAll()
function solution(my_string, letter) {
return my_string.replaceAll(letter, "");
}
잘 사용하지 않던 메소드인에 이런 상황에서 빛을 발하는 것을 보니 기억해둬야 겠다 싶다.
3. filter()
function solution(my_string, letter) {
return Array.from(my_string).filter(t => t !== letter).join('');
}
일단 split 메소드가 아닌 Array.from이라는 유사 배열 객체에서 얕게 복사된 인스턴스를 만드는 방식에 filter를 얹은 풀이이다. 애초에 나는 filter가 손에 익지않아 잘 안 썼는데, 이런 풀이도 많이 봐야겠다는 생각이 들었다.
'내용 복습 > 알고리즘' 카테고리의 다른 글
프로그래머스 lv.1 모의고사 (0) | 2024.09.27 |
---|---|
프로그래머스 코딩테스트 입문 가위바위보 (0) | 2024.09.05 |
프로그래머스 Lv.2 이진변환 반복 (0) | 2024.06.27 |
프로그래머스 Lv.1 달리기 경주 JS (1) | 2024.06.08 |
[JS] 프로그래머스 1단계 - 문자열 내 마음대로 정렬하기 (0) | 2024.02.23 |