백준 | 11651 : 좌표 정렬하기 2 (Java)

usuyn·2021년 9월 11일
0

알고리즘

목록 보기
3/12

문제에 대한 자세한 정보는 백준 | 11651번 : 좌표 정렬하기 2에서 확인할 수 있다.


풀이

  1. 좌표를 저장할 2차원 배열(length : [n][2])을 생성한다.
  2. 좌표를 입력받아 2차원 배열에 저장한다.
  3. 정렬을 위한 Arrays.sort() 사용을 위해 익명 클래스로 Comparator를 생성해 compare 함수를 작성한다.

소스코드

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

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(br.readLine());
		int[][] coordinate = new int[n][2];

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

		Arrays.sort(coordinate, new Comparator<int[]>() {

			@Override
			public int compare(int[] o1, int[] o2) {
				// TODO Auto-generated method stub
				if (o1[1] == o2[1])
					return o1[0] - o2[0];
				return o1[1] - o2[1];
			}
		});

		for (int i = 0; i < n; i++) {
			bw.write(String.valueOf(coordinate[i][0]) + " " + String.valueOf(coordinate[i][1]) + "\n");
		}

		br.close();
		bw.close();
	}

}

메모리, 시간

메모리 : 62692KB
시간 : 844ms


풀이 후

11650번 : 좌표 정렬하기와 정렬 기준만 다른 문제였다. 11650번을 풀이할 때는 coordinate class를 작성해 Collections.sort()를 사용했다면 이번에는 2차원 배열에 저장 후 compare 함수를 작성하는 방식으로 풀어봤다.

profile
https://select-dev-from.tistory.com 로 이사 중

0개의 댓글