한 걸음씩
[프로그래머스][JS] 문자열 잘라서 정렬하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181866
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(myString) {
var answer = '';
for (str of myString){
if (str !== 'x'){ // 'x'가 아니면
answer += str // 더하고
}else{// 'x'라면
answer += ' ' // 공백을 더하고
}
}
const arrStr = answer.split(' ').sort().filter(item => item.trim() !== '')
return arrStr;
}
const arrStr = answer.split(' ').sort().filter(item => item.trim() !== '')
split으로 배열로 만들고, sort로 정렬을 하고 봤더니
['a', 'b', 'c', 'd', ''] 이런 식으로 공백이 생겼는데
(아마 이 공백은 주어진 myString문자열의 마지막 문자가 'x'로 끝나기 때문에 발생한 것 같다.)
문자열의 공백은 trim() 메서드를 사용하면 되는데, '배열의 공백은 어떻게 없애지?'라는 고민을 하다가 gpt에게 물어봤다.
filter라는 메서드가 있는데 배열의 요소를 필터링하는 배열 메서드이다.
각 요소에 대해 콜백을 실행하고 콜백 함수 반환값이 'true'인 경우만 모아서 새로운 배열로 반환하는 메서드이다.
그렇다면 메서드에 전달할 콜백 함수의 매개변수를 정하고(배열의 각 요소를 나타냄) → item
item변수는 문자열 요소를 나타내므로, trim메서드를 사용하여 문자열 앞뒤의 공백을 제거하면 된다. → item.trim()
그리고 trim() 메서드는 공백을 제거한 새로운 문자열을 반환한다.
item.trim()!== ''; 이 부분은 item.trim() 여기서 공백을 제거한 문자열과 빈 문자열과 비교하여 조건에 해당하는 것만 골라서 새 배열을 만들어준다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Array.prototype.filter() - JavaScript | MDN
filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.
developer.mozilla.org
리뷰
이 문제도 꽤 오랜기간 못 풀어서 그냥 넘겨버릴까 고민하다가 이 것도 못 풀면 다음 문제도 못 풀겠지라는 마음으로 오늘 각 잡고 풀었다.
거의 다 풀어냈는데 마지막에 배열의 공백을 제거하는 방법을 몰라서 그 부분만 검색하고 풀었다.
덕분에 filter라는 메서드를 알게 되었다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 1로 만들기 (0) | 2023.05.26 |
---|---|
[프로그래머스][JS] 특별한 이차원 배열 1 ✅ (0) | 2023.05.25 |
[프로그래머스][JS] 2차원으로 만들기 (0) | 2023.05.25 |
[프로그래머스][JS] 합성수 찾기 ✅ (0) | 2023.05.25 |
[프로그래머스][JS] 핸드폰 번호 가리기 (1) | 2023.05.25 |