한 걸음씩

[프로그래머스][JS] 문자열 잘라서 정렬하기 본문

Programmers

[프로그래머스][JS] 문자열 잘라서 정렬하기

winter17 2023. 5. 25. 22:06

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라는 메서드를 알게 되었다.