public class Scale
{
public String[] scale(int x, int y, String[] image) {
int m = image.length;
int n = image[0].length();
char[][] big = new char[y*m][x*n];
String[] sol = new String[y];
for(int i=0; i < y; i++)
sol[i] = "";
for(int i=0; i < m; i++)
for(int j=0; j < n; j++)
for(int k=y*i; k < y*(i+1); k++)
for(int l=x*j; l < x*(j+1); l++)
big[k][l] = image[i].charAt(j);
for (int i=0; i < y; i++) {
for (int j=0; j < x; j++) {
double sum=0;
for(int k=m*i; k < m*(i+1); k++)
for(int l=n*j; l < n*(j+1); l++)
sum += big[k][l];
sol[i] += (char)(sum/(m*n) + 0.5);
}
}
return sol;
}
}
Explanation
y*image.length, x*image[0] 크기의 big 배열을 만든다. big 배열에 다음과 같이 image 배열값을 대입해준다.
// 확장한 배열(big[][])에 image 배열 값을 대입한다.
for(int i=0; i < m; i++)
for(int j=0; j < n; j++)
for(int k=y*i; k < y*(i+1); k++)
for(int l=x*j; l < x*(j+1); l++)
big[k][l] = image[i].charAt(j);
x*y 크기에 맞춰 해당하는 big 배열의 값을 sum에 더하고 m*n으로 나눠주고 반올림이기 때문에 0.5를 더한다. 이 값을 통해 한 칸의 문자값을 표현할 수 있다.
References
최근 덧글