Front-end Developer
백준 알고리즘 11651 [파이썬] 본문
배운 내용
숫자나 문자를 정렬할 때 sort 사용법에 대해서 배웠다. sort() 함수 만으로 생각보다 할 수 있는것이 많았다. [x, y]라는 숫자값이 여러개가 있는 리스트에서 x 크기가 작은 순서대로 x 크기가 같을 때는 y 크기가 작은 순서대로 정렬시킬 때 리스트.sort() 만 하면 된다. 그러면 알아서 정렬시켜준다.
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
문제풀이
1. sort에 key값을 사용해서 푼 풀이
N = int(input())
lst = []
for i in range(N):
[x,y] = map(int ,input().split())
lst_xy = [x,y]
lst.append(lst_xy)
lst.sort(key=lambda k: (k[1], k[0])) # key=lambda를 사용하면 숫자 크기 기준으로 나열되게한다.
# k: (k[1], k[0]) 값은 리스트가 정렬되는 기준이 y값의 크기가 먼저 우선이고 y값이 같을 때 x값의 크기로 정렬된다는 뜻이다.
for i in lst:
print(i[0], i[1])
2. sort 만 가지고 푼 풀이
N = int(input())
lst = []
for i in range(N):
[x,y] = map(int ,input().split())
lst_xy = [y,x]
lst.append(lst_xy)
lst.sort()
for i in lst:
print(i[1], i[0])
'알고리즘' 카테고리의 다른 글
백준 알고리즘 10815 [파이썬] (0) | 2021.03.13 |
---|---|
백준 알고리즘 4949 [파이썬] (2) | 2021.03.11 |
백준 알고리즘 11729 [파이썬] (0) | 2021.03.09 |
백준 알고리즘 1929 [파이썬] (0) | 2021.03.09 |
백준 알고리즘 1157 [파이썬] (0) | 2021.03.06 |
Comments