For Programmer

백준 11650,11651번 파이썬 문제풀이(정렬 - 좌표 정렬하기 1,2) 본문

코팅테스트/백준 문제 모음

백준 11650,11651번 파이썬 문제풀이(정렬 - 좌표 정렬하기 1,2)

유지광이 2021. 10. 9. 16:41
728x90

 

11650 코드 

import sys

n = int(input())

array = [] #좌표를 담을 리스트 선언

for _ in range(n):
    x, y = sys.stdin.readline().split() #입력을 sys로 받는다 단,문자열로 저장됨
    array.append([int(x), int(y)]) #int로 변환하여 array리스트에 리스트형태로 담아준다.(이중 리스트)

# array.sort(key=lambda a: a[1]) #배열 array를 우선 y값을 기준으로 오름차순 정렬을 해준다.
# array.sort() #그 후 배열 array를 x값을 기준으로 오름차순 정렬을 해준다.

array.sort(key=lambda x: (x[0],x[1])) #먼저 배열의 첫번째 원소(x)를 기준으로 오름차순 한다음 y를 기준으로 오름차순 정렬한다.

for i in array:
    print(i[0], i[1])

 

11651 코드

import sys

n = int(input())

array = [] #좌표를 담을 리스트 선언

for _ in range(n):
    x, y = sys.stdin.readline().split() #입력을 sys로 받는다 단,문자열로 저장됨
    array.append([int(x), int(y)]) #int로 변환하여 array리스트에 리스트형태로 담아준다.(이중 리스트)

# array.sort() #배열 array를 우선 x값을 기준으로 오름차순 정렬을 해준다.
# array.sort(key=lambda a: a[1]) #그 후 배열 array를 y값을 기준으로 오름차순 정렬을 해준다.

array.sort(key=lambda x: (x[1],x[0])) #먼저 배열의 첫번째 원소(x)를 기준으로 오름차순 한다음 y를 기준으로 오름차순 정렬한다.

for i in array:
    print(i[0], i[1])

 

-> 간단하게 위의 두문제는 sort함수에 람다함수를 사용할 수 있나 없나를 물어보는 문제이다. x , y좌표를 둘다 오름차순정렬할 때는 array.sort(key=lambda x: (x[1],x[0])) 와 같이 한번에 표현도 가능하다. 또한 내림차순일때는 reverse = True값을 주어 내림차순으로도 정렬이 가능하다. 단, x는 오름차순으로 정렬하고 x가 같을 때는 y는 내림차순 일 경우 위의 함수에서 주석처리가 되어있는 것 처럼 sort함수를 두번으로 나누어서 x는 그냥 오름차순 정렬 y는 reverse = True 를 주어 정렬도 가능하다.

728x90
Comments