CodeWars 01: Your order, please

김기욱·2021년 3월 24일
0

코딩테스트

목록 보기
37/68

문제설명

Your task is to sort a given string. Each word in the string will contain a single number. This number is the position the word should have in the result.

If the input string is empty, return an empty string. The words in the input String will only contain valid consecutive numbers.

각 단어에 들어있는 숫자를 기준으로 주어진 문자열을 재정렬해라

제한사항

Numbers can be from 1 to 9. So 1 will be the first word (not 0).
숫자는 1~9로 제한된다. 그러므로 1이 들어있는 단어가 첫 번째에 위치한다.

입출력 예시

"is2 Thi1s T4est 3a" -----> "Thi1s is2 3a T4est"
"4of Fo1r pe6ople g3ood th5e the2" -----> "Fo1r the2 g3ood 4of th5e pe6ople"
"" -----> ""

풀이

import re

def order(sentence):
    return ' '.join(sorted(sentence.split(), key=lambda x: re.findall("\d+", x)))

sorted와 정규표현식을 활용해 재정렬했습니다.

  1. 우선 split()을 통해 띄어쓰기 단위로 문자열을 나눠줍니다.
  2. re.findall("\d+", x)을 쓰면 단어 중 digit(숫자)해당되는 부분만 추출합니다
  3. 이를 기준으로 sorted(오름차순) 정렬을 합니다.
  4. 그럼 문제의 조건과 같이 오름차순 정렬이 완료됩니다.
profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글