문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
wallpaper에 있는 문자열의 문자들중 #이 있는 것이 파일이 있는 칸인데, 드레그 할 수 있는 최소 영역을 구하는 문제이다.

프로그래머스 예제에 있는 이 그림을 보자 파일이 있는 위치를 좌측 상단에 있는 좌표 생각하면 패턴이 보이기 시작한다.
여기에서, 드레그를 시작하는 위치는 파일 위치들 중 x, y 좌표가 가장 작은 값이라는 것이 보였고, 드레그가 끝나는 위치는 파일 위치들 중에 x, y 좌표가 가장 큰 값을 가진다는 것이 보였다.


이 두가지를 모두 봐도, 생각한 패턴이 일치한다는 것을 알 수 있다.
1. 드레그 시작 좌표를 드레그 끝 좌표를 초기화한다.
2. wallpaper에 있는 문자열들의 문자들을 순회하면서 파일을 만나면 시작 좌표, 끝 좌표를 최솟값, 최댓값을 찾는다.
3. 드레그 끝 부분은 +1을 더해준다.
4. 배열을 만들어서 반환한다.
소스코드
class Solution {
public int[] solution(String[] wallpaper) {
int lux = Integer.MAX_VALUE;
int luy = Integer.MAX_VALUE;
int rdx = Integer.MIN_VALUE;
int rdy = 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) == '#') {
lux = Math.min(i, lux);
luy = Math.min(j, luy);
rdx = Math.max(i, rdx);
rdy = Math.max(j, rdy);
}
}
}
rdx += 1;
rdy += 1;
return new int[] {lux, luy, rdx, rdy};
}
}'Problem Solving > Programmers' 카테고리의 다른 글
| [Programmers] [PCCE 기출문제] 9번 / 이웃한 칸 - Java (0) | 2025.06.26 |
|---|---|
| [Programmers] 대충 만든 자판 - Java (0) | 2025.06.23 |
| [Programmers] 카드 뭉치 - Java (0) | 2025.06.20 |
| [Programmers] 가장 가까운 같은 글자 - Java (0) | 2025.06.19 |
| [Programmers] 덧칠하기 - Java (0) | 2025.06.18 |