[์ธํ๋ฐ/Greedy/1.์จ๋ฆ์ ์]
<<ํ์ด>>
์ด ๋ฌธ์ ๋ Greedy ๋ผ๋ ๋ฐฉ์์ ์ฑํํ์ฌ ํธ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ฅผ ์๊ฐํ์ง ์๊ณ ์ ๊ทผ ํ๋ค๋ฉด ์๊ฐ๋ณด๋ค ๋ณต์กํ ํํ๋ก ์ฝ๋๊ฐ ๊ตฌ์ฑ์ด ๋๊ณ
์์นซ ์๊ฐ ๋ณต์ก๋๊ฐ N^2๊ฐ ๋๋ฏ๋ก ์๊ฐ ์ด๊ณผ๊ฐ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Greedy์ ์๋ฏธ์ธ <<๊ฐ ์ ํ์ ์๊ฐ์ ๊ฐ๋ฅํ ์ต์ ์ ๊ฒฐ์ ์ ๋ด๋ ค ์ ์ฒด์ ์ธ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ ๋จ์ํํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ ์ํ๋ก ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.>>
์ฌ๊ธฐ์๋ ํค๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ง๋ฆ์ผ๋ก์จ ๋ชธ๋ฌด๊ฒ๋ง ๋น๊ตํ๋ฉด ๋๋ ํํ๋ก ์ต์ ํ ์์ผฐ๋ค.
ํค๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํด์ ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํด์ผ ํ๋๋ฐ, Comparable<>์ compareTo() ๋ฅผ ์ด์ฉํด์ ๊ตฌํ๋ค.
import java.util.Arrays;
import java.util.Scanner;
class Main {
private int solution(Body[] body, int n){
int max = body[0].w;
int count = 1;
for (int i = 1; i < n; i++) {
if (max < body[i].w) {
max = body[i].w;
count++;
}
}
return count;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Body[] body = new Body[n];
for (int i = 0; i < n; i++) {
body[i] = new Body(in.nextInt(), in.nextInt());
}
Arrays.sort(body);
System.out.println(T.solution(body, n));
}
}
class Body implements Comparable<Body> {
public int h, w;
Body(int h, int w) {
this.h = h;
this.w = w;
}
@Override
public int compareTo(Body o) {
return o.h - this.h; //๋ด๋ฆผ์ฐจ์
}
}
-๊ฐ์ฌ๋ ํ์ด-
๊ฐ์ฌ๋์ ArrayList ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ผ๋ฏ๋ก Arrays.sort๊ฐ ์๋๋ผ Collections.sort๋ฅผ ์ด์ฉํ๋ค.
๋๋จธ์ง๋ ๋์ผ !!
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
class Main {
private int solution(ArrayList<Body> list, int n){
int max = Integer.MIN_VALUE;
int count = 0;
for (Body body : list) {
if (body.w > max) {
max = body.w;
count++;
}
}
return count;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
ArrayList<Body> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add( new Body(in.nextInt(), in.nextInt()));
}
Collections.sort(list);
System.out.println(T.solution(list, n));
}
}
class Body implements Comparable<Body> {
public int h, w;
Body(int h, int w) {
this.h = h;
this.w = w;
}
@Override
public int compareTo(Body o) {
return o.h - this.h; //๋ด๋ฆผ์ฐจ์
}
}
<<์ถ๊ฐ ๊ณต๋ถ>>
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ ์์ด๋์ด๋ ๋งค ์๊ฐ ๊ฐ์ฅ ์ข์ ๊ฒ๋ง์ ์ ํํจ์ผ๋ก์จ, ์ต์ข ์ ์ผ๋ก ์ ์ฒด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์ต์ ์ด ๋๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์์ "์ต์ ์ธ ์ํ๋ฅผ ๋ง๋ ๋ค"๋ ๊ฒ์, ๊ฐ ์ ํ์ ์๊ฐ์ ๊ฐ๋ฅํ ์ต์ ์ ๊ฒฐ์ ์ ๋ด๋ ค ์ ์ฒด์ ์ธ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ ๋จ์ํํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ ์ํ๋ก ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ง ์ค์ํ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ด์ผ ํฉ๋๋ค:
- ๊ทธ๋ฆฌ๋ ์ ํ ์์ฑ: ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ ๋จ๊ณ์์ ํ๋์ ์ต์ ํด๋ฅผ ์ ํํ ๋, ์ด ์ ํ์ด ์ต์ข ์ ์ผ๋ก ์ ์ฒด ๋ฌธ์ ์ ์ต์ ํด๋ฅผ ๋ณด์ฅํด์ผ ํฉ๋๋ค. ์ฆ, ๊ฐ ๋จ๊ณ์์์ ์ต์ ์ ์ ํ์ด ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์์ด์๋ ์ต์ ์์ ์๋ฏธํฉ๋๋ค.
- ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ: ๋ฌธ์ ์ ์ต์ ํด๊ฐ ํด๋น ๋ฌธ์ ์ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ์ต์ ํด๋ก๋ถํฐ ๊ตฌ์ฑ๋ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ ๋ค์, ์ด๋ฌํ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐ์ฑ ์ ๊ฒฐํฉํ์ฌ ์ ์ฒด ๋ฌธ์ ์ ํด๊ฒฐ์ฑ ์ ๋์ถํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฌํ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋ ํจ๊ณผ์ ์ด๋ฉฐ, ๋ฌธ์ ์ ๋ฐ๋ผ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๋ฌธ์ ์ ๋ํด ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ต์ ์ ํด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋ฉฐ, ํน์ ๋ฌธ์ ์ ํน์ฑ๊ณผ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ ๊ฐ๋ฅ์ฑ๊ณผ ํจ์จ์ฑ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง๋ง, ๊ทธ ์ ์ฉ์ด ์ ์ ํ์ง, ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ์ ์๊ตฌ ์กฐ๊ฑด์ ๋ง๋ ์ต์ ์ ํด๋ฅผ ์ค์ ๋ก ์ ๊ณตํ๋์ง๋ ๊ฐ๊ฐ์ ๋ฌธ์ ๋ง๋ค ์ ์คํ๊ฒ ๊ฒํ ํด์ผ ํฉ๋๋ค.
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ/Greedy/2. ํ์์ค ๋ฐฐ์ ] (4) | 2024.03.23 |
---|---|
[์ธํ๋ฐ/DP/2.๋๋ค๋ฆฌ ๊ฑด๋๊ธฐ] (5) | 2024.03.22 |
[๋ฐฑ์ค/1010/๋ค๋ฆฌ ๋๊ธฐ] (6) | 2024.03.19 |
[๋ฐฑ์ค/1009/๋ถ์ฐ์ฒ๋ฆฌ] (2) | 2024.03.19 |
[๋ฐฑ์ค/1032/๋ช ๋ น ํ๋กฌํํธ] (5) | 2024.03.18 |
๋๊ธ