🖇️ 문제 링크
💡 문제 분석
모든 원의 중심 좌표는 x축에 위치합니다.
원{왼쪽 좌표, 오른쪽 좌표}형태로 리스트에 저장 후, 왼쪽 좌표 기준 오름차순으로 정렬합니다.
정렬 후 인접 원과 겹치는 부분이 있다면 false를 리턴합니다.
⌨️ 코드
import java.io.*;
import java.util.*;
public class Q22942 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = stoi(br.readLine());
List<int[]> list = new ArrayList<>();
while(N-- > 0) {
String s = br.readLine();
int x = stoi(s.split(" ")[0]);
int r = stoi(s.split(" ")[1]);
list.add(new int[]{x - r, x + r});
}
list.sort((c1, c2) -> {
if(c1[0] != c2[0]) return c1[0] - c2[0];
return c1[1] - c2[1];
});
boolean ret = true;
int[] prev = new int[]{-(int)1e9, -(int)1e9};
for(int[] c : list) {
if(prev[1] >= c[0] && prev[1] <= c[1]) {
ret = false;
break;
}
prev = c;
}
System.out.println(ret ? "YES" : "NO");
}
public static int stoi(String s) {
return Integer.parseInt(s);
}
}
⏱️ 결과
Uploaded by Notion2Tistory v1.1.0