kwang0612   3년 전

sort 함수를 두번에 걸쳐 쓰면 틀렸다고 나오고

l.sort(key=lambda t:(t[0],t[1]))

이렇게 한번에 sort하면 정답이라고 나오는데 왜 그런지 알고싶습니다.

감사합니다.

kravi   3년 전

l.sort(key=lambda t:(t[0],t[1]))는 x값을 먼저 비교하고, 같을 시에 y로 정렬하는데,

이는 y 값으로 한번 정렬을 하고 난 뒤에 x로 정렬을 하는것과 같습니다.

따라서 t[1]로 먼저 소팅을 하면 정답이지만, 

파이썬으로 소트를 두번걸면 시간초과가 발생하니 pypy로 제출하시면 됩니다.

https://www.acmicpc.net/source...

kwang0612   3년 전

답변 감사합니다.

궁금한 점이 있는데

l.sort(key=lambda t:t[0])
l.sort(key=lambda t:t[1])

이렇게 하면 x값 부터 정렬되는것 아닌가요?

돌려보면 답은 맞게 나오는데 제출하면 틀렸다고 나옵니다.

sort 위치를 바꾸면 또 맞다고 나오는데 y부터 정렬해야 되는것인가요?

1204jh   3년 전

y값부터 정렬해야 됩니다.

x값 먼저 정렬하면

95, 95

90, 100

100, 120

=> x정렬

90, 100

95, 95

100, 120

=> y정렬

95, 95

90, 100

100, 120


이런식으로 x값이 반전되는 경우가 생길 수 있어요.

x값이 최우선 정렬이기 때문에

제일 나중에 해줘야 원하는 결과가 나옵니다.

댓글을 작성하려면 로그인해야 합니다.