전략적으로는 어떻게 해야할지 알았는데, 계속 중복에 대한 숫자에 대해서 처리를 해야해서 오래 고민하고 검색을 해야했던 문제이다.
처음에는 dict를 사용해서 넣으려고 했지만, dict는 무조건 중복 key값에 대해서는 update를 해버리기 때문에 사용을 할 수가 없었다.
결국, list를 활용할 수 밖에 없는 상황이다.
여기서 key값을 sort(정렬)시키는 방법은 lambda를 활용하는 방법이다.
첫 번째 인자인 x[0]부터 정렬을 한 후, x[1]을 정렬해주는 방법으로 다음과 같은 공식(?)을 활용하면 된다.
array.sort(key=lambda x: (x[0], x[1]))
결론적으로는 다음과 같은 코드를 짜면 된다.
1
2
3
4
5
6
7
8
9
10
|
import sys
num = int(sys.stdin.readline())
arr = []
for _ in range(num):
arr.append(list(map(int, sys.stdin.readline().split())))
arr.sort(key=lambda x: (x[0], x[1])) #lambda에 대해서 제대로 알고 있자...
# print(arr)
for i in arr:
print(i[0], i[1])
|
cs |
꽤 많이 활용될 수 있는 lambda이기 때문에 제대로 익혀두는 것이 좋겠다!
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
[백준] 2953_나는 요리사다. (0) | 2021.09.21 |
---|---|
[백준] 2292_벌집 파이썬 (0) | 2021.09.19 |
[백준] 1672_DNA 해독 파이썬 (0) | 2021.09.18 |
[백준] 1225_이상한 곱셈 파이썬 (시간초과 문제 해결하기) (0) | 2021.09.18 |
[백준] 2566_최댓값 파이썬 (0) | 2021.09.16 |