본문 바로가기
IT/JAVA

[18일차] JAVA 알고리즘 문제풀이 1

by GWLEE 2022. 7. 13.

package com.gyuone.homework;

/* findAverage 메서드를 작성하시오
- 2차원 배열(double)을 입력으로 받음(사이즈 제한 없음)
배열의 각 항목을 조사하면서 0값을 발견하면 해당 위치의 Row들 값 평균과
Column 들 값 평균 중 큰 값으로 대체함 */

public class Homework {
	public static void main(String[] args) {
		double[][] findAvgInput = { { 5, 4.5, 6.8 }, { 6, 0, 3.4 }, { 7, 8.4, 2.3 } }; // 버블타입의 2차원 배열


		findAverage(findAvgInput);
	}

	public static void findAverage(double[][] array) {
		for (double[] row : array) {
			for (double column : row) {
				System.out.printf("%2.1f  ", column);

				for (int i = 0; i < array.length; i++) {
					for (int j = 0; j < array[i].length; j++) {
						if (array[i][j] == 0) {
							double sum = array[i-1][j] + array[i][j]+ array[i+1][j]; // 4.5 + 0 + 8.4
							double sum2 = array[i][j-1] + array[i][j] + array[i][j+1]; // 6.0 + 0 + 3.4
							if (sum > sum2) {
								double avg = sum / 3;
								array[i][j] = avg;

							} else {
								double avg = sum2 / 3;
								array[i][j] = avg;
							}
						}
					}
				}
			}
			System.out.println();
		}

	}

}

 

 

 

 

답안..

package com.gyuone.homework;

/* findAverage 메서드를 작성하시오
- 2차원 배열(double)을 입력으로 받음(사이즈 제한 없음)
배열의 각 항목을 조사하면서 0값을 발견하면 해당 위치의 Row들 값 평균과
Column 들 값 평균 중 큰 값으로 대체함 */

public class HomeWork2 {
	public static void main(String[] args) {
		double[][] findAvgInput = { { 5, 4.5, 6.8 }, { 6, 0, 3.4 }, { 7, 8.4, 2.3 } };
		findAverage(findAvgInput);
	}

	public static void findAverage(double[][] array) {

		for (int row = 0; row < array.length; row++) {
			for (int column = 0; column < array[row].length; column++) {
				if (array[row][column] == 0) {
					array[row][column] = Math.max(getRowTotal(array, row) / array[row].length,
							getColumnTotal(array, column) / array.length);
				}
			}
		}
		for (double[] row : array) {
			for (double column : row) {
				System.out.printf("%2.1f  ", column);
			}
			System.out.println();
		}
	}

	public static double getRowTotal(double[][] array, int row) {
		double sum = 0.0;
		for (int column = 0; column < array[row].length; column++) {
			sum += array[row][column];
		}
		return sum;
	}

	public static double getColumnTotal(double[][] array, int column) {
		double sum = 0.0;
		for(int row=0; row < array.length;row++){
			sum += array[row][column];
		}
		return sum;
	}
}

'IT > JAVA' 카테고리의 다른 글

[19일차] JAVA  (0) 2022.07.14
[18일차] JAVA 알고리즘 문제풀이 2  (0) 2022.07.13
[18일차] JAVA 컬렉션 프레임워크  (0) 2022.07.13
[17일차] JAVA Programmers 개념정리  (0) 2022.07.12
[17일차] JAVA Generic / lambda  (0) 2022.07.12

댓글