본문 바로가기
Algorithm/BaekJoon[Java]

백준 11650

by 씨니 2022. 3. 22.
728x90

▶11650문제 - 좌표 정렬하기

 

▶ 풀이 과정

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));
		
		int count = Integer.parseInt(br.readLine());//입력받을 횟수 
		int[][] arr = new int[count][count];
		
		for(int i = 0 ; i < count; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			arr[i][0] = Integer.parseInt(st.nextToken());
			arr[i][1] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(arr, (a1, a2) ->{
			if(a1[0] == a2[0]) {
				return Integer.compare(a1[1], a2[1]);
			}else {
				return Integer.compare(a1[0], a2[0]);
			}
		} );
		
		for(int i = 0; i < count; i++) {
			bw.write(String.valueOf(arr[i][0] + " " + arr[i][1]) + "\n");
		}
		bw.flush();
		bw.close();
		br.close();
	}
}

 

** 알아둬야 할것**

- 2차원 배열 정렬(배열, 람다식)

Arrays.sort(배열이름, (o1, o2) ->{
	if(o1[0] == o2[0]){ //arr[n1][] == arr[n1+1][] 1차원 배열에 있는 값 같으면
    	return Integer.compare(o1[1],o1[1]); //arr[n1][n2], arr[n1+1][n2+1] 2차원 배열 값 비교
    }else{
    	return Integer.compare(o1[0], o2[1]); //arr[n1][], arr[n1+1][] 1차원 배열 값 비교
    }
});

- 2차원 배열 정렬2

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

 

** 틀렸던 이유 **

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));
		
		int count = Integer.parseInt(br.readLine());//입력받을 횟수 
		String[] arr = new String[count];
		
		for(int i = 0 ; i < count; i++) {
			arr[i] = br.readLine();
		}
		
		Arrays.sort(arr);
		
		for(int i = 0; i < count; i++) {
			bw.write(arr[i]+ "\n");
		}
		bw.flush();
		bw.close();
		br.close();
	}
}

- 위의 방법대로 풀 경우 String 배열은 음수 양수를 구분하지 못해 음수일 경우 -2 > -1로 인식해 오답이 출력됨.

- 따라서 int형 2차원 배열로 바꿔서 풀었음.

728x90

'Algorithm > BaekJoon[Java]' 카테고리의 다른 글

백준 10825  (0) 2022.03.23
백준 11651  (0) 2022.03.22
백준 2751  (0) 2022.03.22
백준 9465  (0) 2022.03.22
백준 9461  (0) 2022.03.21