Solved.ac Class [2]

실버 5 등급 : 좌표 정렬하기

문제 설명

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

출력

1 -1
1 1
2 2
3 3
3 4

문제 접근 방식

  1. 2차원 평면 (x, y)의 좌표 N개가 주어짐
  2. 정렬 순서는 1순위: x 2순위: y
    x의 값이 같다면 y의 순서로 정렬하기 (ex (1,3), (1,1) 의 순서는 (1,1) (1,3))
  3. 출력과 동일하게 해주기

여기서 sort, sorted의 key = lambda 기능을 사용하면 매우 간편하게 풀 수 있습니다.

  1. lambda x: 를 통해 각 리스트의 원소를 하나씩 가져올 것
  2. 현재 각 원소는 튜플 형태로 저장해두었습니다.
  3. 각 원소의 0번째와 1번째 순서대로 진행 (x[0], x[1])
  4. 각 원소를 출력

문제 풀이

import sys
n= int(sys.stdin.readline())
a=[]
for i in range(n):
    x, y =  map(int, sys.stdin.readline().split())
    a.append((x, y))
a = sorted(a, key = lambda x : (x[0], x[1]))

for x, y in a:
  print(x, y)