2020-12-07 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. (Comparator를 알면 정말 쉽고 모르면 정말 어려운 문제..) import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; publ..
2020-11-13 알고리즘 및 배열에 관련된 문제를 처리하다 보면, 각 배열을 정렬을 해야 하는 경우가 생기게 된다. 때문에 오늘은 이 정렬 중 2차원 배열을 정렬하는 방법을 알아보도록 하자. 흔히들 1차원 배열은 Array.sort(배열 이름)라는 메서드를 이용해서 손쉽게 정렬을 할 수 있다. 다만 2차원 배열의 경우에는 여기에 추가적인 조건을 제시하여야 한다. 우선 예제는 아래와 같다. (3행 2열의 배열을 우선적으로 만들어 주었다.) ex)배열: arr (3, 5) (4, 2) (3, 4) 그러면 바로 코드를 살펴보도록 하자 import java.util.Arrays; import java.util.Comparator; 우선 2종류의 import를 실행해야 한다. 정렬을 위한 Arrays와 비교를..
2020-11-12 문제 수강신청의 마스터 김종혜 선생님에게 새로운 과제가 주어졌다. 김종혜 선생님한테는 Si에 시작해서 Ti에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 참고로, 수업이 끝난 직후에 다음 수업을 시작할 수 있다. (즉, Ti ≤ Sj 일 경우 i 수업과 j 수업은 같이 들을 수 있다.) 수강신청 대충 한 게 찔리면, 선생님을 도와드리자! 입력 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 109) 출력 강의실의 개수를 출력하라. 풀이 사실 처음에는 주어진 예제를 보고 강의 순서가 시간별 순서대로 나열된다고 생각하여, 접근하였다. 때문에 강의의 종료 시간..