제목 : 프로그래머스 바탕화면 정리
설명: 프로그래머스 코딩테스트 바탕화면정리를 풀었습니다
문제 자체를 이해하는데 시간이 더 걸린것 같습니다
소요시간 : 30분
// (1,3) 1 이 y축 3dl x축이다
// top, left 를 구해서 left 는 탑으로 계속올려서 만나는 점 top 은 왼쪽으로 계속 보내서 만나게 하자
// right는 아래로 계속 내리고, bottom은 오른쪽으로 계속 보내자
// 그럼 먼저 top, left,right, bottom을 구해야함
// 다 구했으면 각각의순서대로 진행
public static int[] solution(String[] wallpaper) {
// (y,x)
int top = 10000; // y, i가 낮은수
int left = 10000; // j가 가장 낮은 수
int bottom = 0; // i가 가장큼
int right = 0; // j가 가장큼
// i 가 y축이 됨
for (int i = 0; i < wallpaper.length; i++) {
for (int j = 0; j < wallpaper[i].length(); j++) {
char a = wallpaper[i].charAt(j);
if(a == '#'){
if(top > i) top = i;
if(left > j) left = j;
if(bottom < i) bottom = i;
if(right < j) right = j;
}
}
}
int[] answer = {top,left,bottom+1,right+1};
return answer;
}
따로 자료구조까지 사용할 필요없이 문제를 이해한 후
간단하게 작성할 수 있습니다.
각각 맨 위, 아래, 오른쪽, 아래의 좌표를 따와 선을 그어 만나는 점이 드래그 끝점이라고 생각하면 편합니다.
조금 주의해야할 점은 왼쪽위 끝점과 오른아래 끝점중 오른쪽아래는 +1을 해줘서 처리해야합니다.
드래그 아래방향이기때문입니다.
문제를 푼 사람들이 꽤 있었고 lv1인데 정답률이 50퍼센트 미만이여서
풀어보았는데 생각보다 쉬웠습니다.