본문 바로가기

알고리즘/백준

[Python] 백준 파이썬 11650 좌표 정렬하기

https://www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

# 백준 11650 좌표 정렬하기
n = int(input())

dot_list = []

for _ in range(n):
  dot = input().split() # 1
  dot_list.append(dot)

dot_list.sort() # 2

for i in dot_list:
  print(' '.join(i)) # 3

첫 제출 코드입니다.

# 1 : input().split()으로 받으면 기본적으로 리스트로 받아집니다.

 

# 2 : sort() 함수를 쓰면 알아서 문제 조건에 맞게 정렬이 됩니다.

 

# 3 : 현재 리스트 상태이므로 공백(' ')을 기준으로 합쳐주고 출력합니다.

# input

6
1 2
1 -1
2 1
3 -1
3 -5
4 1


# output
1 -1
1 2
2 1
3 -1
3 -5
4 1

답은 틀렸다고 나오길래 출력 type이 정수가 아니라 문자라서 틀린 건가 싶어서 단순하게 정수형으로 바꿔주기만 했습니다.

n = int(input())
dot_list = []
for _ in range(n):
  dot = list(map(int, input().split()))
  dot_list.append(dot)

dot_list.sort()
for i in range(n):
  print(dot_list[i][0], dot_list[i][1])
# input
6
1 2
1 -1
2 1
3 -1
3 -5
4 1

# output
1 -1
1 2
2 1
3 -5
3 -1
4 1

type만 정수로 바꿔주니까 통과했습니다.

앞으론 출력 type도 신경 써야겠습니다.

 

제출하고 다시 살펴보니문자열 정렬을 했을 때는 사전 순으로 정렬이 된 것 같습니다. -1 이 -5보다 앞에 있는 걸 볼 수 있습니다.