미소를뿌리는감자의 코딩

[백준 2024/01/28] 11650번 좌표 정렬하기 본문

코딩 테스트/백준

[백준 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