코딩테스트
[프로그래머스] 바탕화면 정리 자바
mhui123
2025. 3. 29. 14:33
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/161990
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
주어진 바탕화면 정보들을 바탕으로 한 번으로 모든 아이콘을 선택할 수 있는 최소 드래그길이를 갖는 시작점과 종료점의 좌표를 구하는 문제.
String[] wallpaper는 바탕화면 정보를 담은 배열이며 "."은 빈칸, "#"은 아이콘을 표현한다.
나의 생각
아이콘들의 좌표정보를 뽑아 각 x, y의 최소값과 최대값 추려 반환하여 처리한다.
우선 최소값 xy, 최대값 xy를 담을 변수 4개를 선언한 후
아이콘 정보의 String인 wallpaper을 반복문처리하여 charAt으로 아이콘을 하나씩 조회해서
Math.min 과 Math.max을 통해 최소값과 최대값을 추출하였다.
코드
//바탕화면에서 최소한의 이동거리로 모든 파일을 선택할 수 있는 시작점과 종료점을 반환하라.
public int[] solution(String[] wallpaper) {
int wallH = wallpaper.length;
int wallW = wallpaper[0].length();
int foundMinX = wallH;
int foundMinY = wallW;
int foundMaxX = 0;
int foundMaxY = 0;
boolean hasIcon = false;
//바탕화면정보 정리
for(int i = 0; i < wallH; i++){
for(int j = 0 ; j < wallW; j++){
char c = wallpaper[i].charAt(j);
if('#' == c){
hasIcon = true;
foundMinX = Math.min(foundMinX, i);
foundMinY = Math.min(foundMinY, j);
foundMaxX = Math.max(foundMaxX, i +1);
foundMaxY = Math.max(foundMaxY, j +1);
}
}
}
if(!hasIcon) return new int[]{0, 0, 0, 0};
return new int[]{foundMinX, foundMinY, foundMaxX, foundMaxY};
}
반응형