문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
정답풀이1
-꽈배기처럼 x좌표와 y좌표를 직관적으로 바꾸는 코드
#좌표 정렬하기 2
#2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로,
# y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
from array import array
import sys
N = int(input())
xy_arrays = []
#1. 값넣기
for i in range(N):
x,y = map(int,sys.stdin.readline().split())
xy_arrays.append([y,x])
xy_arrays.sort()
for y,x in xy_arrays:
print(x,y)
정답풀이2
-람다식으로 sort 정렬 방식 바꾸기
#좌표 정렬하기 2
#2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로,
# y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
from array import array
import sys
N = int(input())
xy_arrays = []
#1. 값넣기
for i in range(N):
xy_arrays.append(list(map(int,sys.stdin.readline().split())))
xy_arrays.sort(key= lambda x: (x[1],x[0]))
for i in xy_arrays:
print(i[0],i[1])
**람다식 심화공부
함수를 간단하게 표현하는 것
정의: 익명 함수
def hap(x, y):
return x + y
hap(10,20)
-----------------
(lambda:x,y : x + y)(10,20)
파이썬 sort에서의 사용
sort(key = lambda x: (조건1,조건2,...))
->조건1을 기준으로 정렬하고 그 다음 조건2로 정렬
ex)
a = [(1, 2), (0, 1), (5, 1), (5, 2), (3, 0)]
c = sorted(a, key = lambda x : x[0]) #x 기준 정렬
# c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1]) #y 기준 정렬
# d = [(3, 0), (0, 1), (5, 1), (1, 2), (5, 2)]
e = [(1, 3), (0, 3), (1, 4), (1, 5), (0, 1), (2, 4)] #x 기준으로 오름차순 정렬 -> y기준으로 내림차순
f = sorted(e, key = lambda x : (x[0], -x[1]))
# f = [(0, 3), (0, 1), (1, 5), (1, 4), (1, 3), (2, 4)]
'CS > 알고리즘' 카테고리의 다른 글
카카오 2022 코딩테스트 '신고결과받기' 파이썬 풀이 (0) | 2022.03.10 |
---|---|
백트래킹 알고리즘 정리(feat. 백준 15649번 파이썬 풀이) (0) | 2022.03.06 |
백준 2108 통계학 파이썬 풀이 (0) | 2022.03.01 |
백준 10989번 수 정렬 3 파이썬 풀이(메모리 관리) (0) | 2022.02.28 |
백준 2750번 수 정렬하기 파이썬 풀이(삽입정렬 , 버블정렬) (0) | 2022.02.25 |