0
답변 1 코드가 이해가 되지 않아요ㅠㅠ 해석부탁드려요!! 답변 1 1 (/p/java)
알고리즘 문제에 대한 코드가 이해가 안돼요ㅠ먼저 문제는,2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증..

알고리즘 문제에 대한 코드가 이해가 안돼요ㅠ


먼저 문제는,

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 

이거구요 아래에 해당 코드가 있어요!

이 코드에서 line34와 36이 이해가 되지 않아요.. 저 배열안에는 어떤값이 저장되는 건가요? 디버깅을 했더니 알수없는 주소값들이 저장돼 있어서 해석이 안돼요.. 그리고 line 36에서 그리고 위에서 compareTo 함수가 있는데 왜 또 sort로 또 정렬해주는 건가요?ㅠㅠ 그냥 코드 전체를 설명해주시면 감사하겠어요ㅠㅠ

부탁드려요ㅠㅠ 이 문제때문에 진도를 나가지 못하고 있습니당...ㅠㅠ

+
saultsu 님께서 10개월 전에 자바에 올린 질문

코드가 이해가 되지 않아요ㅠㅠ 해석부탁드려요!!

0
답변 1 코드가 이해가 되지 않아요ㅠㅠ 해석부탁드려요!! 답변 1 1 (/p/java)
알고리즘 문제에 대한 코드가 이해가 안돼요ㅠ먼저 문제는,2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증..

알고리즘 문제에 대한 코드가 이해가 안돼요ㅠ


먼저 문제는,

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 

이거구요 아래에 해당 코드가 있어요!

이 코드에서 line34와 36이 이해가 되지 않아요.. 저 배열안에는 어떤값이 저장되는 건가요? 디버깅을 했더니 알수없는 주소값들이 저장돼 있어서 해석이 안돼요.. 그리고 line 36에서 그리고 위에서 compareTo 함수가 있는데 왜 또 sort로 또 정렬해주는 건가요?ㅠㅠ 그냥 코드 전체를 설명해주시면 감사하겠어요ㅠㅠ

부탁드려요ㅠㅠ 이 문제때문에 진도를 나가지 못하고 있습니당...ㅠㅠ

+
saultsu 님께서 10개월 전에 자바에 올린 질문
1
 
다메 10개월 전
입출력 예시좀 달아주세요 :)

1개의 답변

0
[답변]코드가 이해가 되지 않아요ㅠㅠ 해석부탁드려요!! 2 (/p/java)
import java.util.*;import java.io.*;class Point implements Comparable < Point > { int x,y; Point(int x, int y) { this.x = x; thi..
import java.util.*;
import java.io.*;
class Point implements Comparable < Point > {
int x,y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
public int compareTo(Point that) {
System.out.println("compare..");
if (this.x < that.x) {
return -1;
} else if (this.x == that.x) {
if (this.y < that.y) {
return -1;
} else if (this.y == that.y) {
return 0;
} else {
return 1;
}
} else {
return 1;
}
}
}
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
Point[] a = new Point[n];
for (int i = 0; i < n; i++) {
String[] temp = bf.readLine().split(" ");
int x = Integer.parseInt(temp[0]);
int y = Integer.parseInt(temp[1]);
a[i] = new Point(x, y);
}
Arrays.sort(a);
StringBuilder sb = new StringBuilder();
for (Point p: a) {
sb.append(p.x + " " + p.y + "\n");
}
System.out.print(sb);
}
}


제가 코드를 잘 이해하지 못해서 설명을 충분히 드리지 못할 것 같아 죄송합니다만,

Comparable 인터페이스로 구현한 compareTo()는 순서를 정렬하기 위해 어떤 기준으로 비교할 것인지에 대한 로직을 정의하는 메소드입니다.

그리고 실제 정렬은 Arrays.sort(..) 를 실행하는 순간 compareTo()의 로직대로 실행됩니다.


아래 링크가 해석에 참고가 되길 바라겠습니다.

http://www.codejava.net/java-core/collections/sorting-arrays-examples-with-comparable-and-comparator


사탕 주기
+
kimho 님께서 10개월 전에 자바에 올린 글
1
 
saultsu 10개월 전
아 너무 감사합니다!! 올려주신 링크와 답변이 너무 도움이 되었어요!!
0
 
kimho 10개월 전
도움이 되셨다니 기쁩니다. 또 질문이 있으시면 언제든지 남겨주세요^^
조회수 539
답글 1
URL