참고: https://www.acmicpc.net/problem/11650
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
x좌표에 대한 정렬을 먼저 수행한뒤,
x좌표의 값이 같으면 해당 x좌표 내에서 y좌표를
정렬하여 출력하는 문제이다.
import sys
N=int(sys.stdin.readline())
x,y=[],[]
for _ in range(N):
a,b=map(int,sys.stdin.readline().split())
x.append(a)
y.append(b)
x.sort()
y.sort()
for i in range(N):
print(x[i],y[i])
처음에는 다음과 같은 방법을 생각했는데,
y를 정렬한 뒤 해당 값들을 출력하게 되니
x와 y의 값이 맞지 않고 x가 양수일 때 y가
해당 x 좌표에 맞지 않는 값이 나와서 틀린 답이 된다.
그러던 중 lambda 표현식에 대해서 알게 되었고,
해당 표현식을 이용하여 2차원 배열의 리스트를
정렬할 수 있다는 것을 알게 되었다.
(참고: https://haesoo9410.tistory.com/193)
import sys
N=int(sys.stdin.readline())
data=[]
for _ in range(N):
a,b=map(int,sys.stdin.readline().split())
data.append([a,b])
data.sort(key=lambda x:(x[0], x[1]))
for i in data:
print(i[0], i[1])
lambda는 함수를 따로 작성하지 않고 바로
return func() 하는 느낌의 표현식인데,
해당 x[0]을 먼저 sorting 하게 되고,
x[1]을 그 다음에 sorting 함으로써
문제에서 원하는 출력을 할 수 있게 된다.
lambda 표현식의 사용과 응용을 공부하게 되었다.
화이팅 💪
'알고리즘(algo) > 백준' 카테고리의 다른 글
[백준] 1181번 - 단어 정렬 (0) | 2023.01.29 |
---|---|
[백준] 11651번 - 좌표 정렬하기 2 (0) | 2023.01.28 |
[백준] 2108번 - 통계학 (0) | 2023.01.27 |
[백준] 1427번 - 소트인사이드 (0) | 2023.01.27 |
[백준] 10989번 - 수 정렬하기 3 (0) | 2023.01.26 |