11651: 좌표 정렬하기 2 - Python

beaver.zip·2024년 5월 28일
0

[알고리즘] 백준

목록 보기
7/45

문제

https://www.acmicpc.net/problem/11651

풀이 1 (정답)

arr = []
for i in range(int(input())):
    x, y = map(int, input().split())
    arr.append((x, y))

arr.sort(key = lambda a: a[0])
arr.sort(key = lambda a: a[1])

for a in arr:
    print(*a)

쉽다~
근데 시간이 매우 오래 걸렸다.

풀이 2 (정답)

import sys
input = sys.stdin.readline

arr = []
for i in range(int(input())):
    x, y = map(int, input().rstrip().split())
    arr.append((x, y))

arr.sort(key = lambda a: a[0])
arr.sort(key = lambda a: a[1])

for a in arr:
    print(*a)

풀이 1input()sys.stdin.readline()으로 대체해주었다.
실행 시간이 많이 개선되었다.

풀이 3 (참고)

import sys
input = sys.stdin.readline

arr = []
for i in range(int(input())):
    x, y = map(int, input().split())
    arr.append((x, y))

arr.sort(key = lambda a: (a[1], a[0]))
for a in arr:
    print(*a)

lambda 함수를 하나로 묶을 수가 있었다!!!
다만 순서를 달리해야 하는 것 같다.
실행 시간은 크게 차이나지 않았지만, 훨씬 간결해졌다.


오늘의 교훈~!

  • 어떤 기준으로 정렬할 때는 arr.sort(key = lambda a: 조건) 식을 사용하자.
  • 두 개 이상의 기준이 있을 경우, arr.sort(key = lambda a: (조건1, 조건2))을 사용하자.
profile
NLP 일짱이 되겠다.

0개의 댓글