[백준 17254] 키보드 이벤트_Python

8283 단어 백준정렬백준

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)]

좋은 웹페이지 즐겨찾기