반응형
문제 설명 (링크)
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
생각
이런 좌표가 주어지고 그 좌표의 정보가 2개 이상 주어진 경우는 클래스로 만들어서 하면 깔끔하고 좋다.
좌표 클래스를 만들고 변수로 x,y를 준다.
후에 Comparable<>를 상속하여 새로운 정렬 조건을 만들어준다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
xy[] arr = new xy[n];
for(int i=0; i<n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i] = new xy(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()));
}
Arrays.sort(arr);
for(int i=0; i<n; i++) {
System.out.println(arr[i].x + " " + arr[i].y);
}
}
}
class xy implements Comparable<xy> {
int x;
int y;
public xy(int x,int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(xy arg0) {
if(this.x == arg0.x) {
return this.y - arg0.y;
} else {
return this.x - arg0.x;
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
반응형
'알고리즘 > 코딩 - 백준' 카테고리의 다른 글
[Java][백준][1158번] 조세퍼스 문제 (0) | 2019.07.05 |
---|---|
[Java][백준] [1260번] DFS와 BFS - 인접 행렬/리스트를 통한 2가지 구현 방법 (1) | 2019.07.04 |
[Java][백준][1946] 신입사원 (0) | 2019.05.31 |
[Java][백준][11047번] 동전 0 (0) | 2019.05.30 |
[Java][백준][1931번] 회의실 배정 (2) | 2019.05.19 |