✍
public class test7 {
public static void main(String[] args) {
Road north = new Road(new int[] {70, 80, 60, 20, 30, 50, 10, 80, 77, 89});
Road south = new Road(70, 60, 40, 50, 55, 65, 23, 44, 37, 88);
north.roadInfo();
south.roadInfo();
System.out.println(north.sum(0, 2) + south.sum(2, 9));
Bridge[] bridges = {new Bridge(2), new Bridge(4), new Bridge(6)};
for(Bridge b : bridges) {
b.total = north.sum(0, b.index) + south.sum(b.index, south.arr.length-1);
}
Bridge minBridge = Bridge.min(bridges);
minBridge.bridgeInfo();
}
}
class Bridge { // 다리 객체
int index;
int total;
public Bridge(int index) {
this.index = index;
}
public void bridgeInfo() { // 다리 정보 출력
System.out.println("다리번호 : " + index);
System.out.println("총시간 : " + total);
}
public static Bridge min(Bridge[] arr) { // 최소값 계산 메서드
Bridge min = arr[0];
for(int i=1; i<arr.length; i++) {
if(min.total > arr[i].total) {
min = arr[i];
}
}
return min;
}
}
class Road{ // 도로 클래스
int[] arr;
public Road(int...nums) {
this.arr = nums;
}
public void roadInfo() {
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public int sum(int startIndex, int endIndex) { // 총합 구하기 메서드
int sum=0;
for(int i=startIndex; i<=endIndex; i++) {
sum += arr[i];
}
return sum;
}
}
✍ Road 클래스
class Road{
int[] arr;
public Road(int...nums) {
this.arr = nums;
}
public void roadInfo() {
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public int sum(int startIndex, int endIndex) {
int sum=0;
for(int i=startIndex; i<=endIndex; i++) {
sum += arr[i];
}
return sum;
}
}
- 멤버변수: 남쪽 북쪽 도로 배열
✍ Bridge 클래스
class Bridge {
int index;
int total;
public Bridge(int index) {
this.index = index;
}
public void bridgeInfo() {
System.out.println("다리번호 : " + index);
System.out.println("총시간 : " + total);
}
public static Bridge min(Bridge[] arr) {
Bridge min = arr[0];
for(int i=1; i<arr.length; i++) {
if(min.total > arr[i].total) {
min = arr[i];
}
}
return min;
}
}
- 멤버변수 : int index, int total
- 참조변수 min에 arr배열의 첫 번째 인덱스를 저장한다. Bridge arr은 각 인덱스별 총합을 모아둔 배열이다.
- 그러므로 참조변수 min에는 각 다리 별 총 소요시간이 저장되는 것이다. min에 저장된 값과, 다른 인덱스와의 총합을 비교하여 더 작은 값을 min에 다시 저장한다. 이걸 반복하면 결국 최소값이 저장된다.
'개발 > Java' 카테고리의 다른 글
[Java] 상속 (0) | 2023.02.06 |
---|---|
[Java] 별 찍기 복습 (0) | 2023.02.01 |
[Java] 객체지향으로 문제풀기 (0) | 2023.01.31 |
[Java] 싱글톤(singleton) (0) | 2023.01.31 |
[Java] static 멤버(클래스 멤버)와 인스턴스 멤버의 메모리 할당 순서 (0) | 2023.01.31 |