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

JE·2023년 12월 24일
0

코테/코플릿

목록 보기
41/57

문자열 잘라서 정렬하기

문제 설명

문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.

단, 빈 문자열은 반환할 배열에 넣지 않습니다.

제한사항

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

입출력 예

myStringresult
"axbxcxdx"["a","b","c","d"]
"dxccxbbbxaaaa"["aaaa","bbb","cc","d"]

입출력 예 설명

입출력 예 #1
myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 따라서 해당 배열을 return 합니다.

입출력 예 #2
myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.

💻 내가 작성한 코드

function solution(myString) {
    const strArr = myString.split('x').sort();    
    return strArr.filter(el => el !== '');
}

뭐든지 문제의 지문을 제대로 봐야하는 것 같다.

문제의 지문을 볼 때 단, 빈 문자열은 반환할 배열에 넣지 않습니다. 라는 멘트가 있다.

초반엔 sort()로 정렬할 경우 배열 0번째 요소에만 빈 문자열이 들어가
if(strArr[0] === '') strArr.shift() 했다.

허나 그건 해당 문제만 그런거지 다른 문제의 경우 여러개의 빈 문자열이 나올 수 있다.

이를 위해 filter로 요소(el)가 ''(빈 문자열)가 아닌 경우만 반환하게 했다.

💻 다른 사람이 작성한 코드

const solution=s=>s.match(/[^x]+/g).sort()

이분은 match메소드를 사용하셨다.
이럴 경우 빈 문자열은 나오지 않을 것 같다.

match

문자열이 정규식과 매치되는 부분을 검색합니다.
-출처 : mdn

function solution(myString) {
  return myString
    .split("x")
    .filter((str) => str !== "")
    .sort();
}

나와 동일한 방식으로 코드를 작성했는데 가독성이 좋아 보여 가져와봤다.


✏️ 마치며

이번 문제의 핵심은 단, 빈 문자열은 반환할 배열에 넣지 않습니다.라는 멘트를 확인하고
예외처리를 어떻게 할 것인가가 핵심인거 같다.

profile
[프론트 애송이] 작은 깨달음도 기록하기

0개의 댓글