람다는 사실 고차함수를 이용할 때 보조하는 역할로 자주 쓰이고는 한다. 형태가 원래 어떻게 생겼는지 알아야, 정확하게 사용할 수 있을 것이다.
lambda 매개변수 : 결과
람다 함수는 return
키워드 없이 자동으로 결과물이 리턴된다.
mylist = [[0,1], [2,1], [2,3], [3,1]]
mylist.sort(key=lambda x:x[1])
//mylist : [[0,1], [2,1], [3,1], [2,3]]
각 배열의 1번째 인덱스를 기준으로 정렬하게 된다.
mylist = [[0,1], [2,1], [2,3], [3,1], [-1,1], [2,2]]
mylist.sort(key=lambda x:(x[1], x[0]))
//mylist : [[-1,1]], [0,1], [2,1], [3,1], [2,1], [2,2], [2,3]])
먼저, 각 배열의 1번째 인덱스를 기준으로 정렬한 뒤 그 리스트들은 0번째 인덱스 기준으로 또다시 정렬한다.
해시 자료구조를 활용한다는 개념으로 접근해보면 재미있다.
0부터 10,000까지의 숫자를 입력받는다. 그렇기 때문에 10,001개의 인덱스를 가진 리스트를 만들어 두고 입력받는 수를 index로 한 다음 중복되는 수는 index의 값을 늘리는 방식으로 확인하는 것이다.
이런 부분은 Dp 코드 작성할 때도 많이 써먹었던 건데 정렬 문제에서도 이런 패턴으로 나올 수 있다는 점을 알고 있어야겠다.