091
[JAVA] 바탕화면 정리 본문
728x90
🔍자바 : 코딩테스트 연습문제. 바탕화면 정리
01. 코드 기획 단계
- 처음에는 각각 값을 넣을 배열을 만들어볼 생각을 했었습니다. 주어진 배열보다 행과 열이 1씩 크게 만들으려고 보니까 사실상 가장 작은 행과 열이 lux, luy에, 가장 큰 행과 열이 rdx, rdy이 들어가는 것을 알게 됐습니다. #이 들어있는 배열의 주소가 r,c일 때 대각선 왼쪽 위의 주소는 r,c이고 대각선 오른쪽 아래의 주소는 r+1,c+1인 것을 보고 각 값의 최소,최댓값을 구해야겠다 생각했습니다.
02. 코드 실행 및 오류 잡기
class Solution {
public int[] solution(String[] wallpaper) {
int lux = wallpaper.length+1, luy= wallpaper[0].length()+1, rdx = 0, rdy = 0;
for(int r = 0; r <wallpaper.length; r++){
for(int c = 0; c < wallpaper[0].length(); c++){
if(wallpaper[r].charAt(c) == '#'){
lux = Math.min(lux,r);
luy = Math.min(luy,c);
rdx = Math.max(rdx,r+1);
rdy = Math.max(rdy,c+1);
}
}
}
int[] answer = {lux, luy, rdx, rdy};
return answer;
}
}
- 굳이 answer에 넣지 않고 바로 출력해도 됩니다. return [lux, luy, rdx, rdy]
03. 정리
- 무조건 #을 하나는 가지기 때문에 lux,luy,rdx,rdy는 각각 행의 최댓값, 열의 최댓값, 행의 최솟값, 열의 최솟값을 초기값을 가지게 하는 게 좋습니다.
728x90
'Coding Test > Programmers(프로그래머스)' 카테고리의 다른 글
[JAVA] 같은 숫자는 싫어 (3) | 2025.04.03 |
---|---|
[JAVA] 삼각형의 완성조건(2) (2) | 2025.04.03 |
[JAVA] 구슬을 나누는 경우의 수 (3) | 2025.04.03 |
[JAVA] 모스부호(1) (2) | 2025.04.03 |
[JAVA] 숨어있는 숫자의 덧셈(2) (2) | 2025.04.02 |