반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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 |
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv.4] 서울에 위치한 식당 목록 출력하기 (MySQL) (0) | 2023.10.11 |
---|---|
[프로그래머스/Lv. 0] 정수를 나선형으로 배치하기 (JAVA) (0) | 2023.10.10 |
[프로그래머스/Lv. 2] 프로세스 (JAVA) (1) | 2023.10.10 |
[프로그래머스/Lv. 2] 멀리 뛰기 (JAVA) (1) | 2023.10.08 |
[프로그래머스/Lv. 3] N으로 표현 (JAVA) (0) | 2023.10.06 |