4. 모든 교점을 *로 찍어서 표현합니다.
meet = sorted(meet, key = lambda i: -i[1])
for x, y in meet:
ny = y_max - y
nx = x - x_min
answer[ny][nx] = '*'
return list(map(''.join, answer))
앞서 처리해야 할 문제 중 하나인 ‘사실 결과가 정반대라면 거꾸로 출력해야 하는데 어떻게 하지?’에 대한 질문을 역순 정렬로 해결했습니다. 정렬의 시간 복잡도가 O(nlogn)이라서 비효율적인 코드라고 생각할 수 있습니다. 느려지는 게 맞습니다. 이전 풀이의 코드는 가장 느리게 실행되더라도 0.2초이지만, 이 코드는 0.4초로 약 2배 이상 더 걸립니다.
이 방법은 별을 찍을 때 무조건 가장 작은 좌표부터 시작하므로 나중에 배열을 뒤집을 필요가 없고, 점을 찍을 때 주어진 값이 양수인지 음수인지 매번 확인할 필요가 없으므로 실수할 가능성을 크게 낮췄습니다. 이런 식으로 무조건 빠르게 돌아가는 것에만 집중하는 것이 아니라 자신의 약점(자주 실수하는 유형, 반복적으로 틀리는 부분)은 시간 복잡도를 조금 희생하여 커버할 수도 있기 때문에 시간이 느리더라도 얻을 수 있는 이득을 살펴보기 바랍니다.