[프로그래머스] Lv.0 문자열 정렬하기 (1) JavaScript

Janet·2023년 4월 6일
1

Algorithm

목록 보기
118/314

문제 설명

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string에는 숫자가 한 개 이상 포함되어 있습니다.
  • my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -

입출력 예

my_stringresult
"hi12392"[1, 2, 2, 3, 9]
"p2o4i8gj2"[2, 2, 4, 8]
"abcde0"[0]

입출력 예 설명

입출력 예 #1

  • "hi12392"에 있는 숫자 1, 2, 3, 9, 2를 오름차순 정렬한 [1, 2, 2, 3, 9]를 return 합니다.

입출력 예 #2

  • "p2o4i8gj2"에 있는 숫자 2, 4, 8, 2를 오름차순 정렬한 [2, 2, 4, 8]을 return 합니다.

입출력 예 #3

  • "abcde0"에 있는 숫자 0을 오름차순 정렬한 [0]을 return 합니다.

문제풀이

💡 문제풀이 과정

  • 답안 1번: for (…of) 반복문을 통해 my_string의 문자열을 돌면서 문자.charCodeAt() < 58 인 것을 찾아 answerpush한다. 참고로 charCodeAt() ****메소드는 주어진 문자열의 인덱스에 대한 유니코드를 나타내는 0부터 65535 사이의 정수를 반환한다. 따라서 charCodeAt() 값이 58미만인 것을 찾으면 0부터 9사이의 숫자로 된 문자만 걸러낼 수 있다. 다음 예제 참고 ⬇️
console.log("0".charCodeAt()); //48
console.log("9".charCodeAt()); //57
console.log("a".charCodeAt()); //97
console.log("z".charCodeAt()); //122
  • 답안 2번: filter()함수를 통해 my_string의 문자 중 !isNaN (’is Not a Number’가 아닌 것 = 숫자인 것)인 것을 찾는다. 그리고 배열을 Number type으로 리턴해야 하므로, map()함수를 이용하여 parseInt(value) 혹은 Number(value)하고 마지막으로 sort()하여 오름 차순 정렬 후 리턴한다.
  • 답안 3번: match() 메소드에 정규식을 사용하여 숫자인 것들만 배열 형태로 리턴할 수 있다. match()메서드는 문자열이 정규식과 매치되는 부분을 검색한다. 그리고 답안 2번과 마찬가지로 map()을 사용하여 값을 Number type으로 바꿔주고 sort()로 오름 차순 정렬하여 리턴한다. 다음 예제 참고 ⬇️
let my_string = "a1b2c3";
console.log(my_string.match(/\d/g)); // ['1', '2', '3']

✅ 답안 #1

function solution(my_string) {
  let answer = [];
  for (let i of my_string) {
    if (i.charCodeAt() < 58) answer.push(Number(i));
  }
  return answer.sort();
}

✅ 답안 #2

function solution(my_string) {
  return [...my_string]
    .filter((v) => !isNaN(v))
    .map((v) => parseInt(v))
    .sort();
}

✅ 답안 #3

function solution(my_string) {
  return my_string
    .match(/\d/g)
    .map((v) => Number(v))
    .sort();
}
profile
😸

0개의 댓글