728x90
앞 쪽 문제에서 x,y 값만 바꾸면 되는 것 아닌가..
뭔가 다른 방법으로 코드를 짜야 하나,,?
import sys
N=int(input())
poslist=[]
for i in range(N):
a,b=map(int,sys.stdin.readline().split())
poslist.append((b,a))
poslist.sort()
for i in range(N):
for j in range(1,-1,-1):
print(poslist[i][j],end=' ')
print ()
이렇게 해서 일단 맞긴 했는데 사실 맞기만 하면 되는 것은 아니니,,
조금 더 간결하게 쓸 수 있는 방법을 찾았다..
from sys import stdin
input=stdin.readline
poslist=[input() for _ in range(int(input()))]
poslist.sort(key=lambda a: (int(a.split()[1]),int(a.split()[0])))
print("".join(poslist))
숏코딩 보면 한줄로 다 끝내던데,, 그건 아직까지 이해하기가 너무 어려워서 포기..
지금 이해 할 수 있는건 여기까지 인 것 같다.
여기부터는 개인적으로 이해 한 것을 정리해봄
더보기
poslist=[input() for _ in range(int(input()))]
계속 값을 쌍으로 받아서 입력하려고 했었는데(2차원 배열),
이 것을 보니까 굳이 그럴 필요가 없었던 것 같다.
저렇게 받으니까 마지막 엔터값(/n)도 알아서 들어가고 편리한 것 같다.
poslist.sort(key=lambda a: (int(a.split()[1]),int(a.split()[0])))
이걸 이해하는데 시간이 좀 걸린 것 같다.
값을 쌍으로 받은게 아니라 한 값으로 받은것을 공백을 기준으로 나누고
1번째 값을 먼저 정렬하고 그다음에 0번째 값을 정렬..
앞으로 뭔가 유용하게 쓰일 것 같다.
마지막에 프린트 할 때 ""로 붙어있어서 값 사이를 붙이는 건 줄 알았는데,
생각 해 보니 split으로 된 게 아니라서..
붙여서 써야 /n이 중복으로 입력되지 않기때문에 해 놓은것 같다.
간단한 문제에서 많은 것을 배움..
728x90
'Baekjoon Case' 카테고리의 다른 글
[백준 #10814] 나이순 정렬 - 파이썬(python) (0) | 2021.08.13 |
---|---|
[백준 #1181] 단어 정렬 - 파이썬(python) (0) | 2021.08.12 |
[백준 #11650] 좌표 정렬하기 - 파이썬(python) (0) | 2021.08.12 |
[백준 #2751] 수 정렬하기 2 - 파이썬(python) (0) | 2021.08.11 |
[백준 #2108] 통계학 - 파이썬(python) (0) | 2021.08.11 |