์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ๋ ์์๋๋ก ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผํ๋ ๋ฌธ์ ๋ค์ ํน์ง์ ๋ฌํํ ๋ฐฉ๋ฒ (์ผ๋ฐ์ ์ผ๋ก O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋ ๋ฐฉ๋ฒ)์ผ๋ก๋ ํด๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, DP๋ฅผ ์ฌ์ฉํ๊ธฐ์๋ ๋ฉ๋ชจ์ด์ ์ด์ ํด์ผํ ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค. ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ๊ฒฝ์ฐ, ํด๋น ์๊ฐ ๋ณต์ก๋๋ ์ ๋ ฌ์์ ๋ฐ์ํ๋ O(NlogN)์์์ ํด๊ฒฐ๋๋ค.
๋ฐฑ์ค - 8982. ์ฌ๋ฅ๊พผ
์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ฒ๋๋ฉด O(N*M)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๊ณ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋ ๋ค๊ณ ์ขํ์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํด๊ฒฐํด์ผ ํ๋ค.
๋จผ์ , ์ฌ๋์ ๋๋ฌผ์ ๋ชจ๋ x์ถ ์์๋ก ์ ๋ ฌํ๊ณ ๋๋ฌผ์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฅ์ด ๊ฐ๋ฅํ์ง ํ์ธํ๋ค. ํ์ธ ๊ณผ์ ์ ๋๋ฌผ์ x์ขํ๋ณด๋ค ์์ ์ฌ๋๋ฅผ ์ฐพ๊ณ ํด๋น ์ฌ๋์ ๋ฐ๋ก ๋ค์ ์ฌ๋์์ ๊ฑฐ๋ฆฌ๊ฐ L ์ดํ๋ฉด ์ฌ๋ฅ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ํ๋ณํ๋ค.
ํ์ด
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Solution {
static class Pair implements Comparable<Pair>{
int x;
int y;
public Pair(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Pair o) {
if (this.x > o.x) {
return 1;
} else if (this.x == o.x && this.y > o.x) {
return 1;
}
return -1;
}
}
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int M, N, L, startIdx = 0, cnt;
static int[] shoot;
static Pair[] animal;
public static void main(String[] args) throws IOException {
String[] input = br.readLine().split(" ");
M = Integer.parseInt(input[0]);
N = Integer.parseInt(input[1]);
L = Integer.parseInt(input[2]);
shoot = new int[M];
animal = new Pair[N];
String[] shootLine = br.readLine().split(" ");
for (int i = 0; i < M; i++) {
shoot[i] = Integer.parseInt(shootLine[i]);
}
for (int i = 0; i < N; i++) {
String[] line = br.readLine().split(" ");
animal[i] = new Pair(Integer.parseInt(line[0]), Integer.parseInt(line[1]));
}
Arrays.sort(shoot);
Arrays.sort(animal);
for (int i = 0; i < N; i++) {
shoot(i);
}
System.out.println(cnt);
}
static void shoot(int idx) {
int shootIdx = 0;
while(shootIdx != M-1 && shoot[shootIdx] <= animal[idx].x) {
shootIdx++;
}
if (--shootIdx >= 0 && Math.abs(shoot[shootIdx] - animal[idx].x) + animal[idx].y <= L) {
cnt +=1;
} else if(++shootIdx < M && Math.abs(shoot[shootIdx] - animal[idx].x) + animal[idx].y <= L) {
cnt+= 1;
}
return;
}
}
๋ฐฑ์ค - 2170. ์ ๊ธ๊ธฐ
์ด ๋ฌธ์ ๋ ์ญ์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ํตํด ํด๊ฒฐํ๋ ค๊ณ ํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ณ , ์ขํ์ ๋ํ ์ ์ฌ๋ถ๋ฅผ ์ ์ฅํ๊ธฐ์๋ ๋ ์ ์ ์์น ๋ฒ์๊ฐ ๋๋ฌด ํฌ๋ค. ๋ฐ๋ผ์ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ํด๊ฒฐํ์๋ค.
๋จผ์ x๋ฅผ ๊ธฐ์ค์ผ๋ก x๊ฐ ๊ฐ๋ค๋ฉด y๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค. ์ดํ ํ์ฌ end๊ฐ ๋ค์ ์์ start๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ ๊ฒน์น๋ ๊ตฌ๊ฐ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ end ๊ฐ์ ํฐ ๊ฐ์ผ๋ก ๊ฐฑ์ ํ๋ค. ํ์ฌ end๊ฐ ๋ค์ ์์ start๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ ๊ฒน์น์ง ์๋ ์๋ก์ด ์ ๋ถ์ ์์์ผ๋ก ๋ณด๊ณ ์ด์ ์ ๋ถ์ ๊ธธ์ด (end - start)๋ฅผ ๋ํด์ฃผ๊ณ start, end๋ฅผ ๊ฐฑ์ ํด์ค๋ค.
ํ์ด
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Solution1 {
static class Pair implements Comparable<Pair>{
int start;
int end;
public Pair(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Pair o) {
if (this.start > o.start) {
return 1;
} else if (this.start == o.start && this.end > o.end) {
return 1;
}
return -1;
}
}
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int N;
static Pair[] points;
public static void main(String[] args) throws NumberFormatException, IOException {
N = Integer.parseInt(br.readLine());
points = new Pair[N];
for (int i = 0; i < N; i++) {
String[] line = br.readLine().split(" ");
points[i] = new Pair(Integer.parseInt(line[0]), Integer.parseInt(line[1]));
}
Arrays.sort(points);
int curIdx = 0;
int distance = 0;
while(curIdx < N) {
int start = points[curIdx].start;
int end = points[curIdx].end;
while(++curIdx < N) {
if (points[curIdx].start <= end)
end = Math.max(end, points[curIdx].end);
else
break;
}
distance += (end - start);
}
System.out.println(distance);
}
}
'๐ Algorithm > ๐ ๊ฐ๋ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ๋ ์ ๋ฆฌ] ํฌ ํฌ์ธํฐ (0) | 2021.04.01 |
---|---|
[๊ฐ๋ ์ ๋ฆฌ] ์ต๋จ ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ - ๋ค์ต์คํธ๋ผ (0) | 2021.03.22 |
[๊ฐ๋ ์ ๋ฆฌ] ์ต๋จ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ - ํ๋ก์ด๋ ์์ฌ (0) | 2021.03.16 |
[๊ฐ๋ ์ ๋ฆฌ] ์์ด, ์กฐํฉ, ๋ถ๋ถ์งํฉ (0) | 2021.02.19 |
๋๊ธ