Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[알고리즘]BOJ_11650_좌표 정렬하기(파이썬 sorted함수와 lambda, sys라이브러리 이용해서 입력받기) 본문
공부/알고리즘(파이썬)
[알고리즘]BOJ_11650_좌표 정렬하기(파이썬 sorted함수와 lambda, sys라이브러리 이용해서 입력받기)
도토리까꿍v 2021. 1. 21. 23:59
Contents
접기
[백준링크]
[제한]
[문제]
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
[입력]
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
[출력]
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
[예제 입력 1]
5
3 4
1 1
1 -1
2 2
3 3
[예제 출력 1]
1 -1
1 1
2 2
3 3
3 4
[정답 코드]
import sys
input = sys.stdin.readline
#점의 개수 n을 입력받는다
n = int(input())
arr=[]
#i번점의 위치 x,y를 n번 튜플로 입력받아 리스트에 담는다.
for i in range(n) :
x, y=map(int, input().split())
arr.append((x,y))
#sorted함수를 이용해 각 튜플 0번째 기준으로 오름차순 정렬시킨다.
#각 튜플의 0번째 기준으로 오름차순하고 0번째 값이 같으면 1번째 값을 보고 오름차순 정렬시킨다.
arr=sorted(arr, key=lambda i: (i[0],i[1]))
#정렬이 수행된 결과를 출력한다.
for i in arr :
print(i[0],i[1],sep=' ')
▲파이썬의 sorted함수와 lambda함수를 이용하여 문제를 풀어보았다.
각 튜플의 0번째 기준으로 오름차순 정렬시키고, 0번째의 값이 같다면 1번째 값을 기준으로 오름차순 정렬시킨다.
'공부 > 알고리즘(파이썬)' 카테고리의 다른 글
[알고리즘]BOJ_9093_단어 뒤집기(파이썬 join함수 사용하는 법) (0) | 2021.04.05 |
---|---|
[알고리즘]BOJ_9625_BABBA (0) | 2021.01.18 |
[알고리즘]BOJ_10989_수 정렬하기3_계수정렬사용(파이썬 sys라이브러리 사용해서 입력받기) (0) | 2021.01.15 |
Comments