[코딩 테스트 연습 입문] 문자열 정렬하기 (1)
문제
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
❗제한사항❗
- 1 ≤ my_string의 길이 ≤ 100
- my_string에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -
입출력 예

입출력 예 설명
입출력 예 #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 합니다.
✔풀이
def solution(my_string):
answer = []
numbers = ['0','1','2','3','4','5','6','7','8','9']
for factor in my_string:
if factor in numbers:
answer.append(int(factor))
answer.sort()
return answer
📝설명
for문을 통해 숫자를 골라내기 위해서, 숫자들로 구성된 리스트 numbers를 만들어 두었다.
for문에서 숫자를 골라내고 answer에 추가한 후, for문 반복이 끝나면 리스트 answer을 정렬할 것이다.
ffor문에서는 my_string을 반복범위로 설정하여 하나씩 꺼낸다.
그렇게 된다면 문자열에서 하나씩 꺼낼 수 있는데, 이 꺼낸 문자를 factor라고 임의로 부를 것이다.
factor이 만약 앞서 정의한 숫자 리스트 numbers에 있다면, answer에 .append()를 사용하여 추가한다.
이 때, 주의해야 할 것은 factor은 문자열에서 꺼낸 것이라 문자뿐만이 아니라 큰따옴표(")에 둘러싸인 형태를 띄고 있다.
우리가 return하는 리스트의 구성요소는 큰따옴표로 구성되어 있지 않기 때문에, 큰따옴표를 없애야 한다.
이를 해결하려면 int()를 사용하면 된다.
for문이 끝나면 리스트 answer에는 my_string에서 숫자만 쏙 빼낸 리스트를 가지게 된다.
결과로 출력하는 리스트는 숫자를 오름차순으로 정렬해야 하므로, sort()를 사용하여 정렬한다.
👑모범 답안

🔎이 코드를 길게 풀어쓴다면,

이렇게 된다.
내 코드와 다른 점은 바로 if가 들어간 코드 부분이다!
.isdigit()의 기능에 대해 알아야 한다.
isdigit()는 문자열의 구성에 숫자가 있다면 True를 리턴한다고 한다.
결이 비슷한 함수로는 알파벳&한글을 확인하는 isalpha(), 알파벳&한글&숫자를 확인하는 isalnum이 있다.
👀느낀 점
: 내장함수 isdigit()에 대해 새롭게 알게 되었다.
파이썬에 정말 효율성을 높여주는 함수들이 많은 것 같다.