알고리즘/백준
[python] 백준 2870번 수학숙제
펄찌
2022. 1. 27. 23:56
입력
첫 번째 줄 테스트 케이스 수
두 번째 줄부터 문자열
출력
문자열에 대해서 숫자만 뽑아서 비 내림차순으로 출력(비 내림차순에 대해서는 문제 내용에 쓰여있다)
문제풀이
테스트 케이스 수를 입력받고 다음 줄부터는 문자열에서 문자를 제외하고 숫자만 뽑아서 비 내림차순으로 정렬하여 출력해야 하는데 구분한다고 하면 split함수가 생각날 것이다. 하지만 일반적인 split함수로는 문자 하나에 대해서만 구분할 수 있는데 re라이브러리 안에 있는 split함수를 쓰면 구분할 문자가 여러 개여도 구분할 수 있다.
위의 독스에서 split에 대한 설명이 충분히 나와있기 때문에 설명은 생략하겠다.
re.split 함수로 숫자로 구성된 문자열을 뽑아내어 int형으로 변환해주고 리스트에 넣어서 sort함수로 오름차순 정렬하여 출력하면 된다.
완성된 코드👌
import re
res = list()
for i in range(int(input())):
s = input()
for v in re.split('[a-z]', s):
if v:
res.append(int(v))
res.sort()
for val in res: print(val)
split에 대한 설명에 부족한 점이 있다면 피드백 바랍니다.