문자열 정렬하기 (1)

2024. 8. 10. 18:00코딩테스트 입문

https://school.programmers.co.kr/learn/courses/30/lessons/120850

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


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


제한사항

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

입출력 예

my_string result
"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) 숫자(str)를 추출한다.

2) 숫자(str)를 숫자(int)로 변환한다.

3) 오름차순으로 정렬한다.

정도가 되겠네요.

 

단계별로 문제를 풀어보겠습니다.

def solution(my_string):
    # 1. my_string에서 if문으로 숫자 num 추출
    # 2. 추출한 num을 int 형변환
    # 3. 리스트를 오름차순 정렬
    answer = sorted([int(num) for num in my_string if '0'<= num <= '9'])
    return answer

문자로 나타난 숫자들은 모두 '0' 이상 '9' 이하이므로 조건문에 따라 숫자들만 꺼내올 수 있습니다.

 

저렇게 조건문을 사용하지 말고, isdigit() 함수를 사용해서도 동일한 결과를 얻을 수 있습니다.

def solution(my_string):
    # 1. my_string에서 if문으로 숫자 num 추출
    # 2. 추출한 num을 int 형변환
    # 3. 리스트를 오름차순 정렬
    answer = sorted([int(num) for num in my_string if num.isdigit()])
    return answer

숫자인지 아닌지만 파악하면 되는 문제였습니다.

'코딩테스트 입문' 카테고리의 다른 글

소인수분해  (0) 2024.08.12
숨어있는 숫자의 덧셈 (1)  (0) 2024.08.11
모음 제거  (0) 2024.08.09
팩토리얼  (0) 2024.08.08
최댓값 만들기(1)  (0) 2024.08.07