바탕화면 정리
드래그를 최상단 좌측 → 최하단 우측 으로 해야 최단 거리이므로
드래그를 시작 하기 위한
x좌표는 파일이 있는("#"표시가 있는) 곳의 x,y 값들 중 최솟값일 때
y좌표는 파일이 있는("#"표시가 있는) 곳의 x,y 값들 중 최댓값일 때의 + 1
(+1 을 하는 이유 : 파일의 좌상단의 꼭지점이 파일의 시작점이므로 파일을 전부 포함하려면 끝나는 지점인 파일의 우하단)
그렇기때문에 파일이 있는 곳들의 좌표를 구해서 그 중 x,y의 최솟값 조합, 최댓값 조합을 구하면 되겠다고 생각하고
이를 기반으로 코드를 짰다!
JAVA
public static int[] solution(String[] wallpaper) {
int maxX = Integer.MIN_VALUE;
int minX = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
char[][] newWallPaper = new char[wallpaper.length][];
for (int i = 0; i < wallpaper.length; i++) {
newWallPaper[i] = wallpaper[i].toCharArray(); // 각 행의 문자열을 문자 배열로 변환하여 저장
}
for(int y = 0 ; y < wallpaper.length ; y ++){
for(int x = 0 ; x < newWallPaper[y].length ; x++){
if (newWallPaper[y][x] == '#'){ // ※ if(wallpaper[i].charAt(j)=='#'){
maxX = Math.max(maxX, x);
minX = Math.min(minX, x);
maxY = Math.max(maxY, y);
minY = Math.min(minY, y);
}
}
}
return new int[]{minY,minX,maxY+1,maxX+1};
}
※ 15번째 줄을 저렇게만 바꾸면 7~11번째 줄 과정이 필요없어진다 ㅎㅎ..
2~5번째 줄
Integer.MIN_VALUE → 정수 변수의 초기값으로 사용되는 상수이자 가장 작은 정수 값인 -2,147,483,648을 나타냄
Integer.MAX_VALUE → 정수 변수의 초기값으로 사용되는 상수이자 가장 큰 정수 값인 2,147,483,647을 나타냄
Python
def solution(wallpaper):
answer = []
x_array, y_array = [],[]
for y in range(len(wallpaper)):
for x in range(len(wallpaper[y])):
if wallpaper[y][x] == "#":
x_array.append(x)
y_array.append(y)
return [min(y_array), min(x_array), max(y_array)+1, max(x_array)+1]
파이썬을 항상 먼저 풀고 그것처럼 java를 풀어서 그런지 비슷하게 하려다보니
필요없는 코드도 넣을 때도 있고 필요한 부분이 생각이 안 날때가 많은 것 같다

'TIL' 카테고리의 다른 글
2023-11-13 TIL(Optional) (5) | 2023.11.13 |
---|---|
2023-10-27(프로그래머스) (1) | 2023.10.27 |
2023-10-25 TIL(객체 지향 프로그래밍의 특징, 프로그래머스) (0) | 2023.10.25 |
2023-10-24 TIL(프로그래머스) (0) | 2023.10.24 |
2023-10-23 TIL(컬랙션) (0) | 2023.10.23 |
댓글