백준 11651 좌표 정렬하기 2 문제풀이 (JAVA)
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
풀이
저번 좌표 정렬하기 문제랑 X, Y가 바뀐 것을 제외하고 같다.
좌표값 클래스를만들어 Y순으로 정렬하고, Y값이 같으면 X순으로 정렬한다.
소스코드
import java.util.*;
import java.io.*;
public class Main{
public static void main(String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
ArrayList<Location> lc = new ArrayList<Location>();
int xTemp;
int yTemp;
StringTokenizer st;
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
xTemp = Integer.parseInt(st.nextToken());
yTemp = Integer.parseInt(st.nextToken());
lc.add(new Location(xTemp, yTemp));
}
Collections.sort(lc);
for(Location l : lc){
bw.write(l.getX()+" "+l.getY()+"\n");
}
bw.flush();
br.close();
bw.close();
}
}
class Location implements Comparable<Location> {
private int x;
private int y;
public Location(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Location l) {
if(this.y>l.getY()){
return 1;
}else if(this.y == l.getY()) {
if(this.x>l.getX()) {
return 1;
}else {
return -1;
}
}else {
return -1;
}
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
Author And Source
이 문제에 관하여(백준 11651 좌표 정렬하기 2 문제풀이 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@phjppo0918/백준-11651-좌표-정렬하기-2-문제풀이-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)