반응형
백준 11650번 문제 - 좌표 정렬하기
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
문제 분석
- 2차원 평면 위의 점 N개가 주어진다.
- 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력해라.
해결 키 포인트
- 위치 정보(int x, y)를 담는 클래스(Point) 생성
- 클래스가 implements Comparable<Point> 하도록 한다.
- 정렬 방법: x가 증가하는 순으로, x가 동일할 경우 y가 증가하는 순으로 !
- 출력을 쉽게하기 위해 Point의 toString을 override하기
코드
import java.io.*;
import java.lang.reflect.Member;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Point [] points = new Point[N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
points[i] = new Point(x,y);
}
Arrays.sort(points);
for (int i = 0; i < N; i++) {
System.out.println(points[i]);
}
}
public static class Point implements Comparable<Point> {
int x;
int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return x + " " + y;
}
@Override
public int compareTo(Point p) {
if(x == p.x) {
return y - p.y;
}
return x - p.x;
}
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[백준 9012] 괄호 (JAVA) (0) | 2023.11.30 |
---|---|
[백준 11866] 요세푸스 문제 (JAVA) (1) | 2023.11.30 |
[백준 10814] 나이순 정렬 (JAVA) (0) | 2023.11.30 |
[백준 1181] 단어 정렬 (JAVA) (0) | 2023.11.30 |
[백준 1966] 프린터 큐 (JAVA) (0) | 2023.11.30 |