본문 바로가기

개발일지/TIL

TIL 23-06-04 백준 - 키보드 이벤트

1. 백준 - 키보드 이벤트 

 문제점

 시도해 본 것들

N, M = 3, 5
input_list = [
    ["1", "0", "A"],
    ["2", "1", "P"],
    ["1", "2", "L"],
    ["2", "4", "E"],
    ["3", "0", "P"],
]

sorted_list1 = sorted(input_list, key=lambda x: int(x[0]))
print(sorted_list1)
sorted_list2 = sorted(input_list, key=lambda x: int(x[1]))
print(sorted_list2)
print(''.join([x[2] for x in sorted_list2]))

숫자와 영어가 섞인 input이 들어오므로 sorted로 정렬하는 과정에서 int()로 형변환 실행

 

N, M = map(int, input().split())
input_list = [input().split() for _ in range(M)]
input_list = sorted(input_list, key=lambda x: [int(x[1]), int(x[0])])
print("".join([x[2] for x in input_list]))

x[0], x[1]의 순서로 정렬할 경우 순서가 0번을 기준으로 정렬이 되는데 왜 그런지 이유를 정확히 모르겠다. 

 

 해결 방법

N, M = map(int, input().split())
print("".join([x[2]for x in sorted([input().split() for _ in range(M)], key=lambda x: [int(x[1]), int(x[0])])]))

가독성이 그리 좋지는 않지만 스스로 줄일 수 있다는 것은 어디에 코드가 들어가야 할지 알고 있다고 생각한다. 

 알게 된 점

key=lambda를 2종류 이상 사용할 수 있음을 알게됐다.