문자열 my_string
이 매개변수로 주어질 때, my_string
안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
my_string
의 길이 ≤ 100my_string
에는 숫자가 한 개 이상 포함되어 있습니다.my_string
은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -my_string | result |
---|---|
"hi12392" | [1, 2, 2, 3, 9] |
"p2o4i8gj2" | [2, 2, 4, 8] |
"abcde0" | [0] |
입출력 예 #1
입출력 예 #2
입출력 예 #3
💡 문제풀이 과정
- 답안 1번:
for (…of)
반복문을 통해my_string
의 문자열을 돌면서문자.charCodeAt() < 58
인 것을 찾아answer
에push
한다. 참고로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();
}