[白駿17254]キーボードイベントPython


https://www.acmicpc.net/problem/17254

🥚質問する



🥚入力/出力



🍳コミットされたコード

n, m = map(int, input().split())
timeline = [[] for _ in range(1000001)]
for _ in range(m):
    a, b, c = map(str, input().split())
    timeline[int(b)].append((int(a), c))
for time_input in timeline:
    if len(time_input) > 0:
        time_input.sort()
        for key_input in time_input:
            print(key_input[1], end='')

🍳改良されたコード

n, m = map(int, input().split())
arr = []
for _ in range(m):
    a, b, c = input().split()
    arr.append([int(a), int(b), c])
print(arr)
arr.sort(key=lambda x:[x[1], x[0]])
print(arr)
for a in arr:
    print(a[2], end='')

🧂アイデア



  • 最初に「提出したコード」で提出したとき、これは効率的ではなかったようなので、グーグルで他の方法を知りました.

  • key=lambdaソート.

  • key=lambdaの使い方
    比較するアイテムに複数の要素がある場合は、デバッガの順序をエクスポートできます.(改良されたコードからlistに順序をエクスポートできる)
    ◻-、現在とは逆の順序で並べられています.
  • e = sorted(a, key = lambda x : (x[0], -x[1]))
    # e = [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]