► JS Algorithm/Programmers

[Programmers] JavaScript 알고리즘 | Lv.0 문자열 잘라서 정렬하기

다람트리 2024. 1. 16. 20:23
반응형

🔒 문제 설명

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

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


🔒 제한사항  

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

🔒 입출력 예

myString result
"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 합니다.

 

🔐 solution of mine

String.split()

Array.sort()

for문

Array.push()

  const solution = (myString, answer = []) => {
    let replaced = myString.split("x").sort();
    for (let i = 0; i < replaced.length; i++) {
      if (replaced[i] !== "") answer.push(replaced[i]);
    }
    return console.log(answer);
  };

  solution("axbxcxdx"); // expected output: ["a","b","c","d"]
  solution("dxccxbbbxaaaa"); // expected output: ["aaaa","bbb","cc","d"]

아래의 풀이로 했더니, '코드실행'에서는 성공했는데, '채점'에서는 모두 실패해서 멘붕이였다.

다른사람들 의견을 찾아보니, x 하나인 케이스 말고, x가 다중으로 있는 경우도 생각하라해서 두둥!,,,, 하고 해결완료 ㅎ

 

◆ 해설집

String.replace()

정규표현식

String.split()

Array.sort()

myString.replace(/^x/, "").replace(/x$/, "").split("x").sort()

처음에 x 한개인 케이스로 풀었다가 실패한 코드

 

◆ 해설집

정규표현식

기호 의미
^문자열 특정 문자열로 시작 (시작점)
/^x/ → x로 시작
문자열$ 특정 문자열로 끝남 (종착점)
/com$/

 


 

🔐 solution of others

String.split()

Array.filter()

Array.sort()

  const solution = (myString) => {
    console.log(
      myString
        .split("x")
        .filter((v) => v !== "")
        .sort()
    );
  };

  solution("axbxcxdx"); // expected output: ["a","b","c","d"]
  solution("dxccxbbbxaaaa"); // expected output: ["aaaa","bbb","cc","d"]

 

🔐 solution of others 

String.match() 정규표현식

Array.sort()

  const solution = (myString) =>
    console.log(myString.match(/[^x]+/g).sort());

  solution("axbxcxdxx"); // expected output: ["a","b","c","d"]
  solution("dxccxbbbxaaaa"); // expected output: ["aaaa","bbb","cc","d"]

 

◆ 해설집

정규표현식

기호 의미
[^문자] 괄호안의 문자를 제외한 것
[^lgEn] "l" "g" "E" "N" 4 문자를 제외

※ ^가 대괄호 안에서 쓰면 제외의 , 대괄호 밖에서 쓰면 시작점
+ 최소 한개 or 여러개
/apple+/

 


 

반응형