코딩 테스트/백준
[백준 2024/01/28] 11650번 좌표 정렬하기
미뿌감
2024. 1. 29. 04:08
728x90
https://www.acmicpc.net/problem/11650
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
1. 접근 방법
이번 문제는 collections를 잘 쓰면 되는 문제이다.
Collections.sort(total_list, Comparator.comparing((List<Integer> list) -> list.get(0)).thenComparing(list-> list.get(1))
이 부분만 알고 있다면, 쉽게 풀 수 있다.
만약 알지 못한다면, 하나씩 for문을 돌려본다면 또 풀 수 있을듯 싶다.
2. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import java.util.Comparator;
import java.util.Collections;
public class b11650 {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
List<List<Integer>> total_list = new ArrayList<>();
int num = Integer.parseInt(reader.readLine());
for(int i =0; i<num ; i++){
String[] xy = reader.readLine().split("\\s+");
List<Integer> sub_list = new ArrayList<>();
int x = Integer.parseInt(xy[0]);
int y = Integer.parseInt(xy[1]);
sub_list.add(x);
sub_list.add(y);
total_list.add(sub_list);
}
Collections.sort(total_list, Comparator.comparing((List<Integer> list) -> list.get(0)).thenComparing(list-> list.get(1)));
for(int i =0; i< num; i++){
System.out.println(total_list.get(i).get(0)+" "+total_list.get(i).get(1));
}
}
}
728x90