본문 바로가기
알고리즘 문제풀이/백준

[알고리즘/백준] 11651 좌표 정렬하기2(자바)

by jeonghaemin 2021. 10. 5.
728x90

문제

https://www.acmicpc.net/problem/11651

풀이 코드

  • x,y 좌표를 표현할 Pos 클래스를 만들고, Comparable을 구현하여 정렬 기준을 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 만든다.
  • 좌표 값들을 입력 받아 Pos타입 배열에 저장하고 배열을 정렬한 후 출력한다.
  • StringBuilder를 사용하여 한번에 모아 출력함으로써 실행 시간 단축
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    static class Pos implements Comparable<Pos>{
        int x;
        int y;

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

        @Override
        public int compareTo(Pos o) {
            if (this.y == o.y) {
                return this.x - o.x;
            } else {
                return this.y - o.y;
            }
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        Pos[] arr = new Pos[n];

        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            arr[i] = new Pos(x, y);
        }

        Arrays.sort(arr);


        for (Pos pos : arr) {
            sb.append(pos.x).append(" ").append(pos.y).append("\n");
        }

        System.out.println(sb);
    }
}

댓글