[99클럽 코테 스터디 3일차 TIL] 바탕화면 정리
2025. 4. 4. 17:06ㆍAlgorithm
📌 키워드
- 완전 탐색
- 시뮬레이션
- 최대 최소
📌 문제 탐색
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/161990
입력
n X m 의 크기를 갖는 격자판에 #, . 으로 각각 파일, 빈 격자판이 String 1차원 배열로 입력된다.
출력
드래그의 시작점과 끝점을 담은 정수 배열
로직
시작점 찾기 : 파일이 위치한 최소의 x축, y축의 교차점 (min_y_index, min_x_index)
끝점 찾기 : 파일이 위치한 최소의 x축, y축의 교차점 (max_y_index+1, max_x_index+1)
2중 포문을 돌면서 min_y, min_x, max_y, max_x 갱신
코드
import java.util.*;
class Solution {
public int[] solution(String[] wallpaper) {
// 입력 : 바탕화면의 상태를 나타낸 격자판 1차원 배열 wallpaper(최대 50 * 50 ), 빈칸은 "." 파일은 "#"
// 로직 :
// - 시작점 찾기 : 파일이 위치한 최소의 x축, y축의 교차점 (min_y_index, min_x_index)
// - 끝점 찾기 : 파일이 위치한 최소의 x축, y축의 교차점 (max_y_index+1, max_x_index+1)
// 2중 포문을 돌면서 min_y, min_x, max_y, max_x 갱신
int min_y = 51;
int min_x = 51;
int max_y = 0;
int max_x = 0;
for (int i=0; i<wallpaper.length; i++){
for (int j=0; j<wallpaper[i].length(); j++){
if (wallpaper[i].charAt(j) == '#'){
min_y = Math.min(min_y,i);
max_y = Math.max(max_y,i);
min_x = Math.min(min_x,j);
max_x = Math.max(max_x,j);
}
}
}
// 출력 : 드래그의 시작점과 끝점을 담은 정수 배열
int[] answer = new int [4];
answer[0] = min_y; answer[1] = min_x; answer[2] = max_y +1 ; answer[3] = max_x + 1;
return answer;
}
}
📌 회고
미들러 문제들은 어렵지 않게 알고리즘을 복습하고 시간에 맞추어 푸는 연습을 하기에 좋은 것 같다. 다음달에는 챌린저 도전해봐야겠다.
이중 포문으로 풀 수 있을때는 적극 활용하는 것이 좋다는 생각이다.
오늘 문제는 로직 자체보다도 출력의 형태를 잘 정의 하고 들어가는 것의 중요성을 느낀 것 같다. x 는 인덱스 번호 그대로 사용하면 되지만, y는 index + 1을 해야 적절한 좌표가 된다.
오늘도 굿
'Algorithm' 카테고리의 다른 글
[99클럽 코테 스터디 6일차 TIL] 섬의 개수 ( 그래프 ) (0) | 2025.04.08 |
---|---|
[99클럽 코테스터디 5일차 TIL] 수열 (슬라이딩 윈도우) (0) | 2025.04.04 |
[99클럽 코테 스터디 2일차 TIL] 피보나치 비스무리한 수열 (0) | 2025.04.01 |
[99클럽 코테 스터디 1일차 TIL] Top K Frequent Elements (0) | 2025.03.31 |
[알고리즘 | 프로그래머스] 게임 맵 최단 거리(BFS) (0) | 2025.03.21 |