티스토리 뷰

728x90

문제

- 점 N개가 주어짐(x, y)

- 해당 좌표들을 y 좌표가 증가하는 순으로 정렬

- y 좌표가 같으면 x 좌표가 증가하는 순서로 정렬

 

해결방법

 Point class를 만들어서 좌표를 Point 배열로 저장하였다. 해당 좌표들을 정렬하기 위해 Comparator를 만들었고, 주어진 조건대로 x 좌표가 증가하는 순으로 정렬하였다. x 좌표가 같다면 y 좌표가 증가하는 순서로 정렬할 수 있도록 조건을 주었다.

이전에 풀었던 11650번 좌표 정렬하기 문제와 똑같이 해결하였다.

 

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

문제 - 점 N개가 주어짐(x, y) - 해당 좌표들을 x 좌표가 증가하는 순으로 정렬 - x 좌표가 같으면 y 좌표가 증가하는 순서로 정렬 해결방법 Point class를 만들어서 좌표를 Point 배열로 저장하였다. 해

sa11k.tistory.com

 

코드

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

// 좌표 class
class Point{
    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        List<Point> points = new ArrayList<>();			// 좌표들을 저장할 리스트

        for(int i = 0; i<N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            // 좌표 입력 받아 저장
            points.add(new Point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())));
        }

	// 좌표 입력 받아 저장
        Comparator<Point> comparator = new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
            	// y 좌표가 같지 않다면 y 좌표가 증가하는 순으로 정렬
                if(o1.y != o2.y){
                    return o1.y - o2.y;
                }
                // y 좌표가 같다면 x 좌표가 증가하는 순으로 정렬
                else {
                    return o1.x - o2.x;
                }
            }
        };

	// comparator를 활용하여 배열 정렬
        Collections.sort(points, comparator);

	// 정렬된 결과 출력
        for(int i = 0; i<N; i++){
            System.out.println(points.get(i).x + " " + points.get(i).y);
        }
    }
}
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday