시리얼 번호

홍범선·2023년 11월 18일
0

알고리즘

목록 보기
28/59

문제

풀이

정렬하는 문제이다.

첫 번째 정렬기준은 길이 순으로 정렬하는 것이다.
두 번째 정렬기준은 모든 자릿수의 합과 비교하여 작은 합을 기준으로 정렬한다.
세 번째 정렬기준으로는 사전순으로 정렬하는 것이다.

파이썬에서 lamda를 사용해서 3가지 기준으로 정렬을 할 수 있다.

for test_case in range(1):
    n = int(sys.stdin.readline())

    arr = []
    for _ in range(n):
        arr.append(sys.stdin.readline().rstrip())

    def get_total(string):
        total = 0
        for s in string:
            if s.isdigit():
                total += int(s)
        return total

    arr.sort(key = lambda x:(len(x), get_total(x), x))

    for ans in arr:
        print(ans)
  1. len(x)를 하게 되면 길이 순으로 정렬하게 된다.
  2. 따로 문자열 내 숫자합을 구하는 함수를 만들고 함수를 넣어주면 작은 합을 기준으로 정렬하게 된다.
  3. 사전 순으로 정렬하기 위해서 단순히 x를 해주면 된다.
profile
알고리즘 정리 블로그입니다.

0개의 댓글