- toc {:toc}
๋ฌธ์
์ฐ๋ฆฌ๋ ์ฌ๋์ ๋ฉ์น๋ฅผ ํค์ ๋ชธ๋ฌด๊ฒ, ์ด ๋ ๊ฐ์ ๊ฐ์ผ๋ก ํํํ์ฌ ๊ทธ ๋ฑ์๋ฅผ ๋งค๊ฒจ๋ณด๋ ค๊ณ ํ๋ค. ์ด๋ค ์ฌ๋์ ๋ชธ๋ฌด๊ฒ๊ฐ 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 ๋ช ์ ๋ชธ๋ฌด๊ฒ์ ํค๊ฐ ๋ด๊ธด ์ ๋ ฅ์ ์ฝ์ด์ ๊ฐ ์ฌ๋์ ๋ฉ์น ๋ฑ์๋ฅผ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํด์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ ์ค์๋ ์ ์ฒด ์ฌ๋์ ์ N ์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ด์ง๋ N ๊ฐ์ ์ค์๋ ๊ฐ ์ฌ๋์ ๋ชธ๋ฌด๊ฒ์ ํค๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ x ์ y ๊ฐ ํ๋์ ๊ณต๋ฐฑ์ ๋๊ณ ๊ฐ๊ฐ ๋ํ๋๋ค.
์ถ๋ ฅ
์ฌ๋ฌ๋ถ์ ์ ๋ ฅ์ ๋์ด๋ ์ฌ๋์ ๋ฉ์น ๋ฑ์๋ฅผ ๊ตฌํด์ ๊ทธ ์์๋๋ก ์ฒซ ์ค์ ์ถ๋ ฅํด์ผ ํ๋ค. ๋จ, ๊ฐ ๋ฉ์น ๋ฑ์๋ ๊ณต๋ฐฑ๋ฌธ์๋ก ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค.
์ ํ
- 2 โค N โค 50
- 10 โค x, y โค 200
์ถ์ฒ:https://www.acmicpc.net/problem/7568
ํ์ด
์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํ์ดํ๋ค. ์ด์ค ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ด๋ฏ๋ก O(N^2) ์ด๋ผ ํ๋จํจ.
๋ฑ์๋ฅผ ๊ฐ๊ฐ ์๊ฐํ์ฌ ๋๋ณด๋ค ๋ฉ์น๊ฐ ํฐ์ฌ๋์ด ์๋์ง ์๋์ง ํ๋ณํจ.
ํฐ ์ฌ๋์ด ์๋ค๋ฉด ๋ฑ์ +1 ์๋ค๋ฉด ๊ทธ ๋ฑ์ ๊ทธ๋๋ก.
#include <iostream>
using namespace std;
struct info{
int h;
int w;
};
struct info iA[51];
int main()
{
int N, h, w, grade;
cin >> N;
for(int i=0; i<N; i++)
{
cin >> w >> h;
iA[i].w = w;
iA[i].h = h;
}
for(int i=0; i<N; i++)
{
grade = 1;
for(int j=0; j<N; j++)
{
if(i==j)
continue;
if(iA[i].w < iA[j].w && iA[i].h < iA[j].h)
grade++;
}
cout << grade << " ";
}
cout << endl;
return 0;
}