[伯俊]1431シリアル番号


質問する



に答える

  • ord関数で数字/文字を判別した後、既存の配列に加算してarrを再作成します.
  • sort関数のキー機能を利用した.
  • 第一条件(文字列長):len(x[0])
  • 第2条件(数字プラス1桁):x[1]
  • 3番目の条件(事前ソート):x(ソート順)
  • コード#コード#

    import sys
    
    def serial() :
        n = int(input())
        arr = [sys.stdin.readline().rstrip() for _ in range(n)]
        
        for i in range(len(arr)) :
            sum = 0
            for j in range(len(arr[i])) :
                if ord(arr[i][j]) in range(48, 58) :
                    sum += int(arr[i][j])
            arr[i] = [arr[i], sum]
        
        arr.sort(key = lambda x : (len(x[0]), x[1], x))
        
        for a in arr :
            print(a[0])
            
    serial()