백준 11650번 좌표 정렬하기 JAVA

YB·2024년 9월 19일

링크텍스트

import java.io.*;
import java.util.*;

public class Main{
    static int [][] arr;
    static int n;

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        
        n =Integer.parseInt(br.readLine());

        arr = new int[n][2];

        for(int i=0;i<n;i++){
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            arr[i][0] = x;
            arr[i][1] = y;
        }

        sort(arr);
    } 
    public static void sort(int[][] arr){
        Arrays.sort(arr,new Comparator<int []>(){
            @Override
                public int compare(int [] o1, int[] o2){
                    if(o1[0]==o2[0]){
                        return o1[1]-o2[1];
                    }else
                        return o1[0]-o2[0];
                }            
        });

        for(int i=0;i<n;i++){
            System.out.println(arr[i][0]+" "+arr[i][1]);
        }

    }

}

처음에 배열초기화를 arr = new int[n][n];했더니 메모리 초과가 나왔다..

아래는 람다식 사용 코드

import java.io.*;
import java.util.*;

public class Main{
    static int [][] arr;
    static int n;

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        
        n =Integer.parseInt(br.readLine());

        arr = new int[n][2];

        for(int i=0;i<n;i++){
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            arr[i][0] = x;
            arr[i][1] = y;
        }

        sort(arr);
    } 
    public static void sort(int[][] arr){
        Arrays.sort(arr,(o1,o2)->{
            if(o1[0]==o2[0]){
                return o1[1]-o2[1];
            }else
                return o1[0]-o2[0];
        });

        for(int i=0;i<n;i++){
            System.out.println(arr[i][0]+" "+arr[i][1]);
        }

    }

}
profile
안녕하세요

0개의 댓글