๐ [๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ ํ์ด] Q.7568 ๋ฉ์น ๋ฌธ์ ํ์ด
๐ ๋ฌธ์
https://www.acmicpc.net/problem/7568
์ฐ๋ฆฌ๋ ์ฌ๋์ ๋ฉ์น๋ฅผ ํค์ ๋ชธ๋ฌด๊ฒ, ์ด ๋ ๊ฐ์ ๊ฐ์ผ๋ก ํํํ์ฌ ๊ทธ ๋ฑ์๋ฅผ ๋งค๊ฒจ๋ณด๋ ค๊ณ ํ๋ค. ์ด๋ค ์ฌ๋์ ๋ชธ๋ฌด๊ฒ๊ฐ x kg์ด๊ณ ํค๊ฐ y cm๋ผ๋ฉด
์ด ์ฌ๋์ ๋ฉ์น๋ (x,y)๋ก ํ์๋๋ค. ๋ ์ฌ๋ A ์ B์ ๋ฉ์น๊ฐ ๊ฐ๊ฐ (x,y), (p,q)๋ผ๊ณ ํ ๋ x>p ๊ทธ๋ฆฌ๊ณ y>q ์ด๋ผ๋ฉด ์ฐ๋ฆฌ๋ A์ ๋ฉ์น๊ฐ
B์ ๋ฉ์น๋ณด๋ค "๋ ํฌ๋ค"๊ณ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ์ด๋ค A, B ๋ ์ฌ๋์ ๋ฉ์น๊ฐ ๊ฐ๊ฐ (56,177), (45,165) ๋ผ๊ณ ํ๋ค๋ฉด A์ ๋ฉ์น๊ฐ B๋ณด๋ค ํฐ ์
์ด ๋๋ค.
๊ทธ๋ฐ๋ฐ ์๋ก ๋ค๋ฅธ ๋ฉ์น๋ผ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๋ค. ์๋ฅผ ๋ค์ด ๋ ์ฌ๋ C์ D์ ๋ฉ์น๊ฐ ๊ฐ๊ฐ (45, 181), (55,173)์ด๋ผ๋ฉด ๋ชธ๋ฌด๊ฒ๋ D๊ฐ
C๋ณด๋ค ๋ ๋ฌด๊ฒ๊ณ , ํค๋ C๊ฐ ๋ ํฌ๋ฏ๋ก, "๋ฉ์น"๋ก๋ง ๋ณผ ๋ C์ D๋ ๋๊ตฌ๋ ์๋๋ฐฉ๋ณด๋ค ๋ ํฌ๋ค๊ณ ๋งํ ์ ์๋ค.
N๋ช
์ ์ง๋จ์์ ๊ฐ ์ฌ๋์ ๋ฉ์น ๋ฑ์๋ ์์ ๋ณด๋ค ๋ "ํฐ ๋ฉ์น"์ ์ฌ๋์ ์๋ก ์ ํด์ง๋ค. ๋ง์ผ ์์ ๋ณด๋ค ๋ ํฐ ๋ฉ์น์ ์ฌ๋์ด k๋ช
์ด๋ผ๋ฉด
๊ทธ ์ฌ๋์ ๋ฉ์น ๋ฑ์๋ k+1์ด ๋๋ค. ์ด๋ ๊ฒ ๋ฑ์๋ฅผ ๊ฒฐ์ ํ๋ฉด ๊ฐ์ ๋ฉ์น ๋ฑ์๋ฅผ ๊ฐ์ง ์ฌ๋์ ์ฌ๋ฌ ๋ช
๋ ๊ฐ๋ฅํ๋ค. ์๋๋ 5๋ช
์ผ๋ก ์ด๋ฃจ์ด์ง
์ง๋จ์์ ๊ฐ ์ฌ๋์ ๋ฉ์น์ ๊ทธ ๋ฑ์๊ฐ ํ์๋ ํ์ด๋ค.
์ด๋ฆ <๋ชธ๋ฌด๊ฒ, ํค> ๋ฉ์น ๋ฑ์
A <55, 185> 2
B <58, 183> 2
C <88, 186> 1
D <60, 175> 2
E <46, 155> 5
์ ํ์์ C๋ณด๋ค ๋ ํฐ ๋ฉ์น์ ์ฌ๋์ด ์์ผ๋ฏ๋ก C๋ 1๋ฑ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ A, B, D ๊ฐ๊ฐ์ ๋ฉ์น๋ณด๋ค ํฐ ์ฌ๋์ C๋ฟ์ด๋ฏ๋ก ์ด๋ค์ ๋ชจ๋ 2๋ฑ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ E๋ณด๋ค ํฐ ๋ฉ์น๋ A, B, C, D ์ด๋ ๊ฒ 4๋ช
์ด๋ฏ๋ก E์ ๋ฉ์น๋ 5๋ฑ์ด ๋๋ค. ์ ๊ฒฝ์ฐ์ 3๋ฑ๊ณผ 4๋ฑ์ ์กด์ฌํ์ง ์๋๋ค. ์ฌ๋ฌ๋ถ์ ํ์ N๋ช
์ ๋ชธ๋ฌด๊ฒ์ ํค๊ฐ ๋ด๊ธด ์
๋ ฅ์ ์ฝ์ด์ ๊ฐ ์ฌ๋์ ๋ฉ์น ๋ฑ์๋ฅผ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํด์ผ ํ๋ค.
๐ ์ ๊ทผ๋ฒ
๋ฉ์น ๋ฌธ์ ์
๋๋ค.
์
๋ ฅ ๋ฒ์๊ฐ ํฌ์ง ์๊ธฐ ๋๋ฌธ์ brute force ๋ฐฉ์์ผ๋ก ํ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ํค์ ๋ชธ๋ฌด๊ฒ ๋ชจ๋ ํฐ ๊ฒฝ์ฐ์๋ง ๋ฉ์น๊ฐ ํฌ๋ค๊ณ ์ธ์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ฐ๋๋ก ํค์ ๋ชธ๋ฌด๊ฒ ๋ชจ๋ ์์ ๊ฒฝ์ฐ์ ๋ฉ์น ์์๋ฅผ ํ๋์ฉ ์ฌ๋ ค์ฃผ๋ฉด
๋ต์ ๋์ถํ ์ ์์ต๋๋ค.
๐ป ์ฝ๋
package problem.brute;
import java.io.*;
public class Main_7568 {
public static void main(String[] args) throws IOException {
int [][] people = input();
int [] answer = solve(people);
print(answer);
}
public static int[][] input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int [][] people = new int[n][2];
for (int i=0; i<n; i++){
String [] info = br.readLine().split(" ");
people[i][0] = Integer.parseInt(info[0]);
people[i][1] = Integer.parseInt(info[1]);
}
return people;
}
public static int[] solve (int [][] people){
int [] rank = new int[people.length];
for(int i=0; i<people.length; i++){
rank[i]++;
for(int j=0; j<people.length; j++){
if(i==j)
continue;
if( people[i][0] < people[j][0] && people[i][1] < people[j][1] ){
rank[i]++;
}
}
}
return rank;
}
public static void print(int [] answer) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for(int i=0; i<answer.length-1; i++)
bw.write(Integer.toString(answer[i])+" ");
bw.write(Integer.toString( answer[answer.length-1] ));
bw.flush();
bw.close();
}
}
Written on July 16, 2020