Python/online judge

백준 [11651.좌표 정렬하기2] | Python

구름솜:D 2024. 1. 29. 15:06
728x90

✏️ 문제

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

 

11651번: 좌표 정렬하기 2

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

www.acmicpc.net

 

✏️ 풀이방법

- 문제에서 y좌표를 오름차순으로 정렬하고, x 좌표가 증가하는 순서로 정렬하라 하였지만 이대로 수행하면 시행착오2와 같은 문제가 발생한다.

1. x좌표를 오름차순으로 먼저 정렬

2. y좌표를 오름차순으로 정렬

 

 

 

📌 코드

n = int(input())
place = [list(map(int,input().split())) for _ in range(n)]
place.sort()
splace = sorted(place,key=lambda x:x[1])

for i in range(n):
    print(*splace[i])

 

 

📌 결과

# 입력
5
0 4
1 2
1 -1
2 2
3 3

# 출력
1 -1
1 2
2 2
3 3
0 4

 

 

🤔 시행착오.1

n = int(input())
place = [list(map(int,input().split())) for _ in range(n)]
splace = sorted(place,key=lambda x:x[1])

for i in range(n):
    print(*splace[i])
#입력
3
1 -1
0 -1
-1 -1

#출력
1 -1
0 -1
-1 -1

#정상출력
-1 -1
0 -1
1 -1

- y값만 오름 차순으로 정렬하면 예제는 정상으로 수행하지만 위 다음의 반례가 존재한다.

 

 

🤔 시행착오.2

n = int(input())
place = [list(map(int,input().split())) for _ in range(n)]
splace = sorted(place,key=lambda x:x[1])
splace.sort()
for i in range(n):
    print(*splace[i])
0 4
1 -1
1 2
2 2
3 3

- y값을 먼저 오름차순으로 정렬하고, x값을 오름차순으로 정렬하면 y값이 x값의 정렬에 따라 다시 변경된다.

 

 

 

🔎 다른풀이

n=int(input())
place = [list(map(int,input().split())) for _ in range(n)]
place.sort(key=lambda x:(x[1], x[0]))
for i in place:
    print(i[0],i[1])

-  정렬옵션에 key순서를 y좌표, x좌표 순으로 쓴다. 

 

 

 

📒 다시보기

 

[Python] 10. 함수(function)

함수란? - 특정한 기능을 수행하기 위해 사전에 만들어 놓은 프로그래밍 구문을 묶어 놓은 것 함수의 종류 내장함수) 별도의 라이브러리를 설치하지 않고 사용할 수 있는 함수 외장함수) 별도의

somin0416.tistory.com

 

[Python] 12. sort()메소드와 sorted()함수

sort() 메소드 sort()는 메소드로 특정 자료(리스트)에 대해 정렬 기능을 수행 sort(): 오름차순 정렬 / sort(reverse = True): 내림차순 정렬 메소드는 반환값이 없기 때문에 기존 객체(리스트)를 정렬 ex_list

somin0416.tistory.com

 

백준[11650.좌표 정렬하기] | Python

✏️ 문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 1

somin0416.tistory.com

 

백준[10814.나이순 정렬] | Python

✏️ 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면

somin0416.tistory.com