백준 11650번: 좌표 정렬하기

Jeongwoo Kim·2022년 3월 30일
0

문제 링크

입력받은 두개의 좌표를 이중배열에 넣고 Comparator를 이용하여 정렬하면 쉽게 풀 수 있다.

자바를 이용한 풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class BaekJoon11650 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		int[][] locs = new int[n][2];					
		
		for(int i = 0; i < n; i++) {		//2차원 배열에 입력받은 수 저장
			StringTokenizer st = new StringTokenizer(br.readLine());
			locs[i][0] = Integer.parseInt(st.nextToken());
			locs[i][1] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(locs, new Comparator<int[]>() {
			
			@Override
			public int compare(int[] i1, int[] i2) {
				if(i1[0] == i2[0]) {		//첫번째 배열이 동일할 경우
					return i1[1] - i2[1];	//두번째 배열 오름차순 정렬
				} else {					//첫번째 배열이 동일하지 않을 경우
					return i1[0] - i2[0];	//첫번째 배열 오름차순 정렬
				}
			}
			
		});
		
		for(int i = 0; i < n; i++) {
			bw.write(locs[i][0] + " " + locs[i][1] + "\n");
		}
		
		bw.flush();
		
	}
}

0개의 댓글

관련 채용 정보