For Programmer
백준 11650,11651번 파이썬 문제풀이(정렬 - 좌표 정렬하기 1,2) 본문
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
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 10814번 파이썬 문제풀이(정렬 - 나이순 정렬) (0) | 2021.10.10 |
---|---|
백준 1181번 파이썬 문제풀이(정렬 - 단어 정렬) (0) | 2021.10.10 |
백준 2108번 파이썬 문제풀이(정렬 - 통계학) (2) | 2021.10.09 |
백준 10989번 파이썬 문제풀이(정렬 - 수 정렬하기3) (0) | 2021.10.08 |
백준 2751번 파이썬 문제풀이(정렬 - 수 정렬하기2) (0) | 2021.10.08 |
Comments