[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/1833?language=java
[풀이]
먼저 데이터를 정렬해준 후 모든 쐐기 쌍들에 대해서 텐트를 설치할 수 있는지 비교해준다.
직사각형의 넓이가 0이면 텐트를 설치할 수 없으며(같은 r이나 같은 c값을 갖는 경우), 내부에 다른 쐐기가 있다면 텐트를 설치할 수 없다.
[코드]
import java.util.*;
class Solution {
public int solution(int n, int[][] data) {
int answer = 0;
Arrays.sort(data, (o1, o2) -> {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
}
return o1[0] - o2[0];
});
for(int i=0; i<n; i++){
int r = data[i][0];
int c = data[i][1];
for(int j=i+1; j<n; j++){
int rr = data[j][0];
int cc = data[j][1];
//넓이가 0이면 패스
if(r==rr || c==cc) continue;
//내부에 다른 쐐기가 있는지
boolean flag = true;
for(int k=i+1; k<j; k++){
int kr = data[k][0];
int kc = data[k][1];
if((r < kr && kr < rr) && (Math.min(c, cc) < kc && kc < Math.max(c, cc))){
flag = false;
break;
}
}
if(flag) answer++;
}
}
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level3 43164 여행경로 (c++) - DFS (0) | 2023.04.23 |
---|---|
[pro] 프로그래머스 level2 42885 구명보트 (Java) - 투포인터 (0) | 2023.04.13 |
[pro] 프로그래머스 level2 178870 연속된 부분 수열의 합 (c++) - 투포인터 (0) | 2023.04.10 |
[pro] 프로그래머스 level2 12902 3*n 타일링 (Java) - dp (0) | 2023.03.25 |
[pro] 프로그래머스 level1 64061 크레인 인형뽑기 (Java) - 스택 (0) | 2023.03.21 |