문제
평면상에 좌표축에 평행한 n개의 직사각형에 관한 데이터를 입력 받은 후 면적이 작은 것부터 큰 것 순으로 정렬하여 출력하는 프로그램을 작성하라.
입력
0 1 2 4 // 왼쪽-위쪽 꼭지점의 좌표가 (0,1)이고, 너비가 2, 높이가 4
1 4 7 8
4 3 12 9
8 18 11 30
5 10 6 11
출력
0 1 2 4
1 4 7 8
5 10 6 11
4 3 12 9
8 18 11 30
코드
public class MyPoint1 {
public int x;
public int y;
}
//2차원 평면에서 정수 좌표를 가지는 하나의 점을 표현하기 위한
//클래스. 한 점의 x-좌표와 y-좌표는 항상 붙어다녀야 하므로 하
//나의 데이터 단위로 취급하기 위해서 이 클래스를 작성
public class MyRectangle1 {
public MyPoint1 lu;
public int width;
public int height;
}
//좌표축에 평행한 하나의 사각형은 왼쪽-위쪽 꼭지점과 너비, 그리고 높이에 의해서 정의된다
public class Code05 {
static MyRectangle1 [] rects = new MyRectangle1[100]; // 참조변수 배열 생성
static int n=0;
public static void main(String[] args) {
try {
Scanner source = new Scanner(new File("data.txt"));
//데이터 파일로 부터 사각형에 관한 정보를 읽어 배열 rects에 저장한다.
//n은 읽은 사각형의 개수이다
while (source.hasNext()) {
rects[n] = new MyRectangle1(); // 객체 생성 필수
rects[n].lu = new MyPoint1(); // 객체 생성 필수(그 전까지는 참조할 것이 없어서)
rects[n].lu.x = source.nextInt();
rects[n].lu.y = source.nextInt();
rects[n].wdith = source.nextInt();
rects[n++].height = source.nextInt();
}
source.close();
} catch (FileNotFoundException e) {
System.out.println("No data file exists.");
System.exit(1);
}
bubbleSort(); //정렬
for (int i=0; i<n; i++) {
System.out.println(rects[i].lu.x + “ “ + rects[i].lu.y + “ “ + rects[i].width + “ “ + rects[i].height);
}
//버블소트 정렬 오름차순
public static void bubbleSort() {
for (int i = n-1; i>0; i--){
for (int j = 0; j < i; i++) {
if((rects[j].width * rects[j].height) > (rects[j+1].width * rects[j+1].height))
MyRectangle1 tmp = rects[j];
rects[j] = rects[j+1];
rects[j+1] = tmp;
}
}
}
}
}
//
'Computer Science > 자바' 카테고리의 다른 글
[JAVA] 객체 생성 및 사용법 (0) | 2023.03.23 |
---|---|
[JAVA] 클래스 소스파일 작성 유의점 (0) | 2023.03.23 |
[Java] 객체지향개념(요약) (0) | 2023.03.17 |
[JAVA] 다항함수 만들기 (0) | 2023.02.10 |
[JAVA] 클래스, 객체, 참조변수, 객체배열_JAVA (0) | 2023.02.08 |