Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코딩테스트
- OOP
- 백준 11659
- MySQL
- GCP
- 재귀와반복문
- 재귀함수
- String.valueOf()
- 코드스테이츠
- 인텔리제이
- 백준
- Spring MVC 구성요소
- Spring Web MVC
- 싱글톤패턴
- 자바
- 11659
- 투포인터알고리즘
- 성능테스트툴
- 알고리즘
- List.of
- Spring MVC 동작원리
- vm인스턴스생성
- 스택
- java
- 클라우드에서 도커 실행하기
- Array.asList
- 구간합구하기
- 프로그래머스
- 코드스테이츠 백엔드
- 버블정렬
Archives
- Today
- Total
순간을 기록으로
[Java] 좌표 정렬 본문
문제
풀이
좌표를 정렬할 수 있는지에 관한 문제다. x를 기준으로 오름차순으로 정렬하되 만약 값이 같다면 y를 기준으로 정렬해야 한다. 좌표는 x와 y로 이루어져 있다. 즉 독립적인 변수 한 개가 아니고 두 개로 구성된다. 따라서 객체를 만들어 관련된 두 변수를 갖게 만들고 객체를 정렬하기 위해 Comparable 인터페이스 compareTo() 메서드를 구현해야 한다.
코드
package 인프런.정렬과검색.좌표정렬.방법1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Point implements Comparable<Point>{ // 좌표
int x;
int y;
public Point(int x, int y) { // 생성자를 사용해서 인스턴스 변수 초기화
this.x = x;
this.y = y;
}
@Override // 객체의 정렬 기준 설정
public int compareTo(Point ob) {
if (this.x == ob.x)
return y - ob.y;
return x - ob.x;
}
}
public class Main {
public ArrayList<Point> solution(int n, int[][] arr) {
ArrayList<Point> list = new ArrayList<>(); // 리스트 선언
for (int i=0; i<n; i++) { // 리스트에 담기
list.add(new Point(arr[i][0], arr[i][1]));
}
Collections.sort(list);
return list;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] arr = new int[n][2];
for (int i=0; i<n; i++) {
arr[i][0] = in.nextInt();
arr[i][1] = in.nextInt();
}
for (Point p : T.solution(n, arr)) {
System.out.println(p.x + " " + p.y);
}
}
}
느낀 점
저번에 같은 문제를 접했을 때는 풀지 못했다. 이번에 두 번째 풀이인데 확실히 문제를 많이 푸는 게 중요한 것 같다. 이번에는 한 번에 풀 수 있었다.
'Problem Solving' 카테고리의 다른 글
[Java] 계단오르기 (0) | 2022.01.25 |
---|---|
[Java] 송아지 찾기 (0) | 2022.01.19 |
[Java] 응급실 (0) | 2022.01.19 |
[Java] 부분집합 구하기 (0) | 2022.01.18 |
[Java] 장난꾸러기 (0) | 2022.01.17 |
Comments