코테/프로그래머스
[프로그래머스/Lv. 1] 바탕화면 정리 (JAVA)
imname1am
2023. 10. 10. 13:24
반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.util.*;
class Solution {
public int[] solution(String[] wallpaper) {
int[] answer = new int[4];
int minX = wallpaper.length;
int minY = wallpaper[0].length();
int maxX = 0;
int maxY = 0;
for(int i = 0 ; i < wallpaper.length ; i++) {
String str = wallpaper[i];
for(int j = 0 ; j < wallpaper[i].length() ; j++) {
if(str.charAt(j) == '#') {
minX = Math.min(i, minX);
minY = Math.min(j, minY);
maxX = Math.max(i, maxX);
maxY = Math.max(j, maxY);
}
}
}
answer[0] = minX;
answer[1] = minY;
answer[2] = maxX + 1;
answer[3] = maxY + 1;
return answer;
}
}
|
cs |
🧩 해결 아이디어
- 초기 시작점 S 좌표의 (x,y)는 큰 값으로, 끝점 E 좌표의 (x,y)는 작은 값으로 설정한다.
- 배열을 완전탐색하며 해당 칸에 파일(#)이 있다면, 시작점 S는 더 작은 값으로, 끝점 좌표 E는 더 큰 값으로 갱신한다.
- 파일을 포함하려면 드래그 할 때의 끝점이 오른쪽 아래에 있어야 하므로, 끝점 좌표의 (x,y)에는 각각 1을 더해준다.
🔺 다른 풀이들
- 완전 간단 간결하게 푸심
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};
}
}
💬 느낀 점
쉬운 문제는 빠르게 풀자..
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형