https://www.acmicpc.net/problem/2246
์ฝ๋
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(bf.readLine()); // ์ฝ๋์ ๊ฐฏ์
int[][] arr = new int[N][2];
for(int i=0; i<N; i++) {
st = new StringTokenizer(bf.readLine());
arr[i][0] = Integer.parseInt(st.nextToken()); // ๋ฐ๋ท๊ฐ๋ก๋ถํฐ ๊ฑฐ๋ฆฌ
arr[i][1] = Integer.parseInt(st.nextToken()); // ์๋ฐ๋น
}
int count = 0; // ํ๋ณด ์ฝ๋์ ๊ฐฏ์
/*
* ์กฐ๊ฑด 1) X๋ณด๋ค ๊ฐ๊น์ฐ๋ฉด X๋ณด๋ค ์๋ฐ๋น๊ฐ ๋ ๋น์ธ๋ค
* ์กฐ๊ฑด 2) X๋ณด๋ค ์๋ฐ๋น๊ฐ ๋น์ธ๋ฉด X๋ณด๋ค ๋ ๋ฉ๋ค.
*/
for(int i=0; i<N; i++) {
boolean flag = true;
for(int j=0; j<N; j++) {
// ์๊ธฐ ์์ ์ ๋น๊ต X
if(i == j)
continue;
if(arr[i][0] >= arr[j][0]) { // i๋ฒ์งธ๋ฅผ X๋ผ๊ณ ํ๋จํ ๋, X๋ณด๋ค ๋ ๊ฐ๊น์ธ๋
if(arr[i][1] >= arr[j][1]) { // X๊ฐ ๋ ๋ฉ๋ฆฌ์๋๋ฐ X๊ฐ ์๋ฐ๋น๊ฐ ๋ ๋น์๋
flag = false;
continue;
}
}
if(arr[i][1] >= arr[j][1]) { // X๋ณด๋ค ์๋ฐ๋น๊ฐ ์ ๋ ดํ ๋
if(arr[i][0] >= arr[j][0]) { // X๋ณด๋ค ์ ๋ ดํ๋ฐ X๋ณด๋ค ๊ฐ๊น์ด ์์๋
flag = false;
continue;
}
}
}
if(flag)
count ++;
}
bw.write(count + "\n");
bw.flush();
bf.close();
bw.close();
}
}
ํ์ด
๋ญ๊ฐ ํท๊ฐ๋ ธ๋๋ฐ ๋ฌธ์ ์์ ์ฃผ์ด์ง ์กฐ๊ฑด 2๊ฐ์ง ๋ชจ๋ ์ํ ๋, ์ฝ๋ X๋ ํ๋ณด๊ฐ ๋๋ค.
1. X๋ณด๋ค ๋ฐ๋ท๊ฐ์ ๋ ๊ฐ๊น์ด ์ฝ๋๋ค์ ๋ชจ๋ X๋ณด๋ค ์๋ฐ๋น๊ฐ ๋ ๋น์ธ๋ค.
2. X๋ณด๋ค ์๋ฐ๋น๊ฐ ๋ ์ผ ์ฝ๋๋ค์ ๋ชจ๋ X๋ณด๋ค ๋ฐ๋ท๊ฐ์์ ๋ ๋ฉ๋ค.
N์ ์ต๋๋ฒ์๊ฐ 10,000 ์ด๋ฏ๋ก ์์ ํ์์ผ๋ก ํด๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์์๊ฑฐ๋ผ ์๊ฐํ๊ณ ์์ ํ์์ผ๋ก ํด๊ฒฐํ๋ค.
O(N^2)
ํ์ด๋ ๋ชจ๋ ์ฝ๋๋ค์ ํ์ํ๋ฉด์ X๋ณด๋ค ๋ ๊ฐ๊น์ด ์ฝ๋์ง๋ง X๋ณด๋ค ์๋ฐ๋น๊ฐ ๋ ์ ๋ ดํ ๊ฒฝ์ฐ
-> 1๋ฒ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ผ๋ฏ๋ก flag = false
๋ํ ๋ชจ๋ ์ฝ๋๋ค์ ํ์ํ๋ฉด์ X๋ณด๋ค ์๋ฐ๋น๊ฐ ์ ๋ ดํ๋ฐ X๋ณด๋ค ๊ฐ๊น์ด๊ฒฝ์ฐ
-> 2๋ฒ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ผ๋ฏ๋ก flag = false
์ ์กฐ๊ฑด์ ํตํด flag ๊ฐ์ด true๋ฉด ํ๋ณด ์ฝ๋์ด๋ฏ๋ก +1์ฉ ํด์ค๋ค.
์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ ค์ ๋ค๋ฅธ ์ ๋ต ์ฝ๋๋ค์ ๋ณด๋ฉด์ ์๊ฐํด๋ณด๋ ๋ค๋ฅธ ์ฝ๋๋ค๊ณผ ๋น๊ตํ๋ฉด์ 1๋ฒ ์กฐ๊ฑด์ด๋ 2๋ฒ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋๊ฒฝ์ฐ, ๋ค๋ฅธ ์ฝ๋๋ค์ ๋ณผ ํ์๋ ์์ด ๊ทธ ์ฝ๋๋ค์ ํ๋ณด ์ฝ๋์์ ์ ์ธ๋๋ค.
๋ฐ๋ผ์ continue๊ฐ ์๋ break๋ฅผ ํตํด ์ ์ถํ๋ 2๋ฐฐ ๊ฐ๋ ์๊ฐ์ด ์ค์ด๋ค์๋ค.
if(arr[i][0] >= arr[j][0]) { // i๋ฒ์งธ๋ฅผ X๋ผ๊ณ ํ๋จํ ๋, X๋ณด๋ค ๋ ๊ฐ๊น์ธ๋
if(arr[i][1] >= arr[j][1]) { // X๊ฐ ๋ ๋ฉ๋ฆฌ์๋๋ฐ X๊ฐ ์๋ฐ๋น๊ฐ ๋ ๋น์๋
flag = false;
// continue;
break;
}
}
if(arr[i][1] >= arr[j][1]) { // X๋ณด๋ค ์๋ฐ๋น๊ฐ ์ ๋ ดํ ๋
if(arr[i][0] >= arr[j][0]) { // X๋ณด๋ค ์ ๋ ดํ๋ฐ X๋ณด๋ค ๊ฐ๊น์ด ์์๋
flag = false;
// continue;
break;
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 3054๋ฒ: ํผํฐํฌ ํ๋ ์(๊ตฌํ) (0) | 2020.04.10 |
---|---|
[๋ฐฑ์ค] 9324๋ฒ: ์ง์ง ๋ฉ์์ง(๊ตฌํ) (0) | 2020.04.09 |
[Codeforces] 1080A: Petya and Origami (0) | 2020.04.09 |
[๋ฐฑ์ค] 14502๋ฒ: ์ฐ๊ตฌ์(DFS, BFS, ์์ ํ์) (0) | 2020.04.08 |
[๋ฐฑ์ค] 1188๋ฒ: ์์ํ๋ก ๊ฐ(๊ตฌํ, ์ต๋๊ณต์ฝ์) (0) | 2020.04.08 |
๋๊ธ