반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[정렬] 백준 - 좌표 정렬하기2 본문
728x90
반응형
https://www.acmicpc.net/problem/11651
-문제해설
이전에 포스팅했던 좌표정렬하기와 아주 유사한 문제이다. 이번에는 y좌표 오름차순 정렬하되 같은 y값인 경우 x좌표를 오름차순으로 정렬하는 문제이다.
이번에는 자바와 파이썬 둘 다 sort함수의 익명함수를 이용해서 풀어봤다.
-자바
package sort;
import java.awt.Point;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class BJ11651 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt( br.readLine() );
StringTokenizer st;
Point[] arr = new Point[n];
for( int i=0; i<n; i++ ) {
st = new StringTokenizer( br.readLine() );
arr[i] = new Point( Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) );
}
Arrays.sort( arr, new Comparator<Point>() {
@Override
public int compare(Point o1, Point o2) {
if( o1.y == o2.y ) return o1.x - o2.x;
else return o1.y - o2.y;
}
});
StringBuffer sb = new StringBuffer();
for( int i=0; i<n; i++ ) sb.append( arr[i].x+" "+arr[i].y+"\n" );
System.out.println( sb );
}
}
-파이썬
import sys
readline = sys.stdin.readline
n = int( readline() )
arr = [ [0]*2 for _ in range( n ) ]
for i in range( n ):
a, b = map( int, readline().split() )
arr[i][0] = a; arr[i][1] = b
arr.sort( key= lambda x : ( x[1], x[0] ) )
for i in range( n ):
print( arr[i][0], arr[i][1] )
728x90
반응형
'데이터 엔지니어링 정복 > Algorithm' 카테고리의 다른 글
[정렬] 백준 - 통계학 (0) | 2021.07.28 |
---|---|
[이분탐색] 백준 - 수 찾기 (0) | 2021.07.27 |
[정렬] 백준 - 좌표 정렬하기 (0) | 2021.07.27 |
[정렬] 백준 - 수 정렬하기 3 (0) | 2021.07.26 |
[정렬] 백준 - 나이순 정렬 (0) | 2021.07.26 |
Comments