본문 바로가기
Dev/CodeBank

백준 #11650, 좌표 정렬하기 <Python> 알고리즘

by 데브길길잇 2023. 3. 28.
728x90
반응형

 

     


    문제

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

    첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

     


     

     

    풀이

    정렬을 하면 되는데 정렬이 2차원 리스트의 조건으로 정렬을 하면 되는 구조이다.

    SQL문으로 보면 Order By Column1 ASC, Column 2 DESC 이런식으로 말이다.

    찾아보니 파이썬에서 지원하는 sort에서의 lambda를 이용해서 첫번째 리스트의 원소를 기준으로 배열하는데

    첫번째 리스트가 같으면 두 번째 리스트로 배열할 수 있게 되어있다.

     


     

    코드

    num = int(input())
    dataset = []
    resultlist = []
    for i in range(num):
        dataset=list(map(int, input().split()))
        resultlist.append(dataset)
    
    resultlist.sort(key=lambda x: (x[0], x[1]))
    
    for i in range(0, len(resultlist)):
        print(str(resultlist[i][0])+' '+str(resultlist[i][1]))

     


     

     

     

     

     

     

     

     

    728x90
    반응형

    댓글