문제
문제 답안
class Solution {
public int[] solution(String[] wallpaper) {
int[][] position = new int[2500][2];
int cnt = 0;
for(int i = 0; i < wallpaper.length; i++){
for(int j = 0; j < wallpaper[i].length(); j++){
if(wallpaper[i].charAt(j) == '#'){
position[cnt][0] = i;
position[cnt][1] = j;
cnt++;
}
}
}
int[][] find = new int[cnt][2];
for(int i = 0; i < cnt; i++){
for(int j = 0; j < 2; j++){
find[i][j] = position[i][j];
}
}
int lux = find[0][0];
for(int i = 1; i < cnt; i++){
if(lux > find[i][0])
lux = find[i][0];
}
int luy = find[0][1];
for(int i = 1; i < cnt; i++){
if(luy > find[i][1])
luy = find[i][1];
}
int rdx = find[0][0];
for(int i = 1; i < cnt; i++){
if(rdx < find[i][0])
rdx = find[i][0];
}
int rdy = find[0][1];
for(int i = 1; i < cnt; i++){
if(rdy < find[i][1])
rdy = find[i][1];
}
int[] answer = {lux, luy, rdx + 1, rdy + 1};
return answer;
}
}
답안 풀이
우선 wallpaper에서 #이 있는 좌표를 크기 미지정 배열 position에 저장.
크기를 cnt로 정해졌으면 find 배열에 저장.
find 배열에서 각각 i, j의 작은 값, 큰 값을 각각의 매개변수에 저장.
다른 사람들 풀이
class Solution {
public int[] solution(String[] wallpaper) {
int minX = Integer.MAX_VALUE;
int minY = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int maxY = Integer.MIN_VALUE;
for(int i=0; i< wallpaper.length;i++ ){
for(int j=0; j<wallpaper[i].length();j++){
if(wallpaper[i].charAt(j)=='#'){
minX = Math.min(minX,i);
minY = Math.min(minY,j);
maxX = Math.max(maxX,i);
maxY = Math.max(maxY,j);
}
}
}
return new int[]{minX,minY,maxX+1,maxY+1};
}
}
깔끔하다........