[백준] 11651번: 좌표 정렬하기 2 (JAVA)

2023. 8. 10. 14:05·Skills/Algorithm
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// 2차원 평면
		// x축, y축 (바둑판)
		// 입력, 계산, 출력
		
		// 입력: N개의 점 (점 -> x좌표, y좌표) => 쌍
		// int x. int y => 점 => 배열 int[]
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // 첫번째 등장하는 숫자를 N으로 전달
		// N은 점의 개수 -> N만큼의 점(x, y)쌍이 존재한다. -> N번 반복
		int[][] pointArr = new int[N][2]; // 점 저장
		for (int i = 0; i < N; i++) {
			// 점마다 x, y쌍을 받아와야 한다.
			int x = sc.nextInt();
			int y = sc.nextInt();
//			System.out.println("x: " + x + ", y: " + y);
			// 이제 저장해줘야 한다.
			int[] point = new int[2]; // x, y가 들어갈 2개의 자리가 필요하다.
			point[0] = x;
			point[1] = y; // (x, y)
			pointArr[i] = point;
		}
		sc.close();
//		System.out.println("pointArr");
//		for (int[] point : pointArr) {	
//			System.out.println(point[0] + " " + point[1]);
//		}
		
		// 계산: (1)y좌표가 증가하는 순 (2)x좌표가 증가하는 순서로 **정렬**
//		Arrays.sort(pointArr);
		// 정렬하는 기준. y좌표를 먼저, x좌표가 다음
		// 증가하는 순 => 오름차순 (인덱스가 증가하는 순...)
		Arrays.sort(pointArr, (e1, e2) -> {
			// e1, e2 -> point
			// y를 먼저 비교
			if (e1[1] != e2[1]) { // point e1, e2의 1(y)가 다를 때
				return e1[1] - e2[1]; // y의 차이로 정렬
				// sort -> +면 e1이 뒤로가고, -면 e2가 뒤로가고, 0이면 그대로.
			} else { // 2개의 y좌표가 같을 때 (e1[1] == e2[1])
				return e1[0] - e2[0];
			}
			// 람다식 -> 1.8이후에 들어온 문법
		});
		// 메서드를 외부로 별도로 정의하지 않고 넣어주는 방법
		// 람다식: (매개변수) -> {메서드의 본문(실행문)}
//		System.out.println("Arrays.sort(pointArr)");
		for (int[] point : pointArr) {	
			System.out.println(point[0] + " " + point[1]);
		}
		
		// 출력: 정렬한 결과를 출력
	}

}

'Skills > Algorithm' 카테고리의 다른 글

알고리즘 Java 배열  (0) 2023.08.10
알고리즘 Java 리스트  (0) 2023.08.10
[프로그래머스] 42748번: K번째수 (JAVA)  (0) 2023.08.09
[프로그래머스] 12935번: 제일 작은 수 제거하기 (JAVA)  (0) 2023.08.09
[백준] 10807번: 개수 세기 (JAVA)  (0) 2023.08.09
'Skills/Algorithm' 카테고리의 다른 글
  • 알고리즘 Java 배열
  • 알고리즘 Java 리스트
  • [프로그래머스] 42748번: K번째수 (JAVA)
  • [프로그래머스] 12935번: 제일 작은 수 제거하기 (JAVA)
개발자 윤구나
개발자 윤구나
개발 공부를 하고 있습니다. Let's go!
  • 개발자 윤구나
    이것은 무엇?????
    개발자 윤구나
    • 분류 전체보기
      • Skills
        • Java
        • Database
        • Flutter, Dart
        • JavaScript
        • React
        • HTML5
        • CSS3, SCSS
        • PHP
        • C#
        • Unity
        • Algorithm
        • GIT·GitHub
        • 그 외
      • Book Review
      • IT NEWS
      • 설계
      • 자기 계발
  • 블로그 메뉴

    • 홈
    • 방명록
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
개발자 윤구나
[백준] 11651번: 좌표 정렬하기 2 (JAVA)
상단으로

티스토리툴바