코딩테스트 연습 기록

이종길·2022년 2월 22일
0

코딩테스트 연습

목록 보기
82/128

2022.02.22 59일차

백준 11650번 (좌표 정렬하기)

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

나의 풀이

  1. x좌표 증가(오름차순), y좌표 증가(오름차순)
  2. 이차원 배열 활용, 배열 정의 재정의
  3. x좌표가 같으면 y좌표 비교
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int[][] nArr = new int[N][2];

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            nArr[i][0] = Integer.parseInt(st.nextToken());
            nArr[i][1] = Integer.parseInt(st.nextToken());
        }

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

        for (int[] ints : nArr) {
            bw.write(ints[0] + " " + ints[1]);
            bw.write("\n");
        }

        bw.close();
    }
}

생각하기

  • 람다식으로 Comparator 표현 가능
Arrays.sort(nArr, (o1, o2) -> {
            if (o1[0] == o2[0]) {
                return o1[1] - o2[1];
            }
            return o1[0] - o2[0];
        });
profile
Go High

0개의 댓글

관련 채용 정보