整列レベル11651座標2題(JAVA)
質問リンク
2 D平面上のN個の点を与える.座標がy座標のインクリメンタルである場合、x座標のインクリメンタルでソートし、プログラム出力を記述します.
第1行は、点の個数N(1≦N≦100000)を与える.2行目から、N行においてi番点の位置xiとyiが与えられる.(−1000≦xi,yi≦100000)座標は常に整数であり、2つの位置が同じ点はない.
最初の行からN行の位置合わせの結果を出力します.
前回の座標の整列題とXを除いて、Yが変えた問題は同じです.
座標値クラスを作成し、Yでソートし、Y値が同じ場合はXでソートします.
質問する
2 D平面上のN個の点を与える.座標がy座標のインクリメンタルである場合、x座標のインクリメンタルでソートし、プログラム出力を記述します.
入力
第1行は、点の個数N(1≦N≦100000)を与える.2行目から、N行においてi番点の位置xiとyiが与えられる.(−1000≦xi,yi≦100000)座標は常に整数であり、2つの位置が同じ点はない.
しゅつりょく
最初の行から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;
}
}
Reference
この問題について(整列レベル11651座標2題(JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@phjppo0918/백준-11651-좌표-정렬하기-2-문제풀이-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol