코딩 테스트/Python

[백준 코딩테스트(Python)] 정렬 - 좌표 정렬하기, 좌표 정렬하기 2

알밤바 2022. 10. 20. 09:18
728x90
반응형

 

1. 좌표 정렬하기

 

11650번: 좌표 정렬하기

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

www.acmicpc.net

 

 

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

 

입력

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

 

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

 

 

 

1. 문제 접근 방식

x좌표, y좌표 2개의 데이터를 리스트에 넣을 때 튜플로 넣어주었다.

그런 후 sort() 함수로 정렬을 하면 x좌표 기준으로 정렬이 되며, x좌표가 같은 수일 경우에는 y좌표를 기준으로 알아서 정렬을 해준다.

 

2. 풀이 코드

N = int(input())

lst = []

for _ in range(N):
    x, y = map(int, input().split())
    lst.append((x, y))
lst.sort()

for i in lst:
    print(*i, sep = ' ')

 


2. 좌표 정렬하기 2

 

11651번: 좌표 정렬하기 2

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

www.acmicpc.net

 

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

 

입력

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

 

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

 

 

1. 문제 접근 방식

좌표 정렬하기 문제와 같이 진행하려고 하였는데 쉽지가 않아서 다른 방법으로 문제를 풀었다.

리스트에 x좌표, y좌표를 추가할 때, 둘의 순서를 바꿔서 넣은 후 정렬을 하면 y좌표 기준으로 정렬이 된다.

이후 출력할 때는 x좌표, y좌표로 출력하면 됨!

 

2. 풀이 코드

N = int(input())

lst = []

for _ in range(N):
    x, y = map(int, input().split())
    lst.append((y, x))
lst.sort()

for y, x in lst:
    print(x, y)
728x90
반응형