<내 풀이>
- 1차 시도
n = int(input())
dots = []
for i in range(n):
[x, y] = map(int, input().split())
dots.append([x, y])
for j in range(0, n-1):
curIdx = j
for k in range(j+1, n):
if(dots[curIdx][0] > dots[k][0]):
curIdx = k
if(dots[curIdx][1] > dots[k][1]):
curIdx = k
dots[j][0], dots[curIdx][0] = dots[curIdx][0], dots[j][0]
dots[j][1], dots[curIdx][1] = dots[curIdx][1], dots[j][1]
for i in range(n):
print(dots[i][0], dots[i][1])
: 시간 복잡도가 O(n^2)이라 안될 거 같았는데.. 역시나 시간 초과로 통과하지 못했다.
- 2차 시도
n = int(input())
dots = []
for i in range(n):
dots.append(list(map(int, input().split())))
dots = sorted(dots, key=lambda x: (x[0], x[1]))
for i in dots:
print(*i)
: 구글링을 통해 다른 사람들이 한 풀이를 참고했다. 일단 모르는 개념들이 많아서 이해하는데 어려움이 있었는데, 개념을 알고 나니 정말 간단하게 구현을 할 수 있다는 것을 알았다.
1) sorted(iterable, *, key=None, reverse=False)
: 첫 번째 인자로 정렬하고자 하는 반복 가능한 자료형을 넣는다. key인자의 값으로 함수를 넣어주면 함수의 반환 값을 기준으로 정렬을 해준다. 마지막 인자를 True로 하면 내림차순으로 정렬을 하게 된다.
2) lambda 함수
: 익명 함수를 만들 때 사용하며, 재사용이 되지 않는 간단하게 사용하는 함수이다. 함수명을 쓰지 않고 'lambda 인자 : 표현식' 형태로 사용하고 리턴 값을 보낸다.
3) Packing, Unpacking Operator *
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 1874] 스택 수열 - Python (0) | 2020.07.24 |
---|---|
[백준 10828] 스택 - Python (0) | 2020.07.24 |
[백준 10814] 나이순 정렬 - Python (0) | 2020.07.22 |
[백준 1181] 단어 정렬 - Python (0) | 2020.07.22 |
[백준 11651] 좌표 정렬하기2 - Python (0) | 2020.07.21 |