[프로그래머스 / Java] 바탕화면 정리

Dreamer·2024년 4월 3일
post-thumbnail

문제

문제1

문제2

문제3

바탕화면의 상태를 나타내는 문자열 배열 : wallpaper
"." 빈칸 , "#" 파일 있음
드래그해서 파일 전체를 선택할 수 있을 때, 드래그의 시작 지점 과 끝 지점 return

나의 풀이

  • 첫번째 풀이 : 성공

접근 방법 : 전체를 선택해야 하니까 최소와 최대를 떠올림
파일이 있는 부분들의 위치를 전부 모아보니 return값이
[행 최소, 열 최소, 행 최대 +1, 열 최대 +1] 인 규칙성 확인 후 접근

행과 열을 모아놓을 list를 만들어 놓고, 
문자열 배열을 돌면서 '#'이면 행과 열 값을 리스트에 저장

행과 열만 모여있는 리스트에서 최대 최소를 뽑아 return 배열에 담아 줌
import java.util.*;
class Solution {
    public int[] solution(String[] wallpaper) {
        
        int[] result = new int[4];
        ArrayList<Integer> row = new ArrayList<>();
        ArrayList<Integer> col = new ArrayList<>();
        
        for (int i = 0; i < wallpaper.length; i++) {
            for (int j = 0; j < wallpaper[i].length(); j++) {
                if(wallpaper[i].charAt(j) == '#') {
                    row.add(i);
                    col.add(j);
                }
            }
        }
        
        result[0] = Collections.min(row);
        result[1] = Collections.min(col);
        result[2] = Collections.max(row) + 1;
        result[3] =Collections.max(col) + 1;
        return result;
    }
}

성공 인증


  • 2차원 배열로 만들어서 DFS로 돌아다니는게 정석인 방법일 듯!
profile
Moving forward based on records

0개의 댓글