BOJ 8979. ์ฌ๋ฆผํฝ
๐โโ๏ธ[Silver V] ์ฌ๋ฆผํฝ - 8979
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 2156 KB, ์๊ฐ: 0 ms
๋ถ๋ฅ
๊ตฌํ, ์ ๋ ฌ
์ ์ถ ์ผ์
2023๋ 12์ 26์ผ 15:29:55
๋ฌธ์ ์ค๋ช
์ฌ๋ฆผํฝ์ ์ฐธ๊ฐ์ ์์๊ฐ ์๊ธฐ์ ๊ณต์์ ์ผ๋ก๋ ๊ตญ๊ฐ๊ฐ ์์๋ฅผ ์ ํ์ง ์๋๋ค. ๊ทธ๋ฌ๋, ๋ง์ ์ฌ๋๋ค์ด ์์ ์ ๊ตญ๊ฐ๊ฐ ์ผ๋ง๋ ์ ํ๋์ง์ ๊ด์ฌ์ด ๋ง๊ธฐ ๋๋ฌธ์ ๋น๊ณต์์ ์ผ๋ก๋ ๊ตญ๊ฐ๊ฐ ์์๋ฅผ ์ ํ๊ณ ์๋ค. ๋ ๋๋ผ๊ฐ ๊ฐ๊ฐ ์ป์ ๊ธ, ์, ๋๋ฉ๋ฌ ์๊ฐ ์ฃผ์ด์ง๋ฉด, ๋ณดํต ๋ค์ ๊ท์น์ ๋ฐ๋ผ ์ด๋ ๋๋ผ๊ฐ ๋ ์ํ๋์ง ๊ฒฐ์ ํ๋ค.
- ๊ธ๋ฉ๋ฌ ์๊ฐ ๋ ๋ง์ ๋๋ผ
- ๊ธ๋ฉ๋ฌ ์๊ฐ ๊ฐ์ผ๋ฉด, ์๋ฉ๋ฌ ์๊ฐ ๋ ๋ง์ ๋๋ผ
- ๊ธ, ์๋ฉ๋ฌ ์๊ฐ ๋ชจ๋ ๊ฐ์ผ๋ฉด, ๋๋ฉ๋ฌ ์๊ฐ ๋ ๋ง์ ๋๋ผ
๊ฐ ๊ตญ๊ฐ๋ 1๋ถํฐ N ์ฌ์ด์ ์ ์๋ก ํํ๋๋ค. ํ ๊ตญ๊ฐ์ ๋ฑ์๋ (์์ ๋ณด๋ค ๋ ์ํ ๋๋ผ ์) + 1๋ก ์ ์๋๋ค. ๋ง์ฝ ๋ ๋๋ผ๊ฐ ๊ธ, ์, ๋๋ฉ๋ฌ ์๊ฐ ๋ชจ๋ ๊ฐ๋ค๋ฉด ๋ ๋๋ผ์ ๋ฑ์๋ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด, 1๋ฒ ๊ตญ๊ฐ๊ฐ ๊ธ๋ฉ๋ฌ 1๊ฐ, ์๋ฉ๋ฌ 1๊ฐ๋ฅผ ์ป์๊ณ , 2๋ฒ ๊ตญ๊ฐ์ 3๋ฒ ๊ตญ๊ฐ๊ฐ ๋ชจ๋ ์๋ฉ๋ฌ 1๊ฐ๋ฅผ ์ป์์ผ๋ฉฐ, 4๋ฒ ๊ตญ๊ฐ๋ ๋ฉ๋ฌ์ ์ป์ง ๋ชปํ์๋ค๋ฉด, 1๋ฒ ๊ตญ๊ฐ๊ฐ 1๋ฑ, 2๋ฒ ๊ตญ๊ฐ์ 3๋ฒ ๊ตญ๊ฐ๊ฐ ๊ณต๋ 2๋ฑ, 4๋ฒ ๊ตญ๊ฐ๊ฐ 4๋ฑ์ด ๋๋ค. ์ด ๊ฒฝ์ฐ 3๋ฑ์ ์๋ค.
๊ฐ ๊ตญ๊ฐ์ ๊ธ, ์, ๋๋ฉ๋ฌ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์์, ์ด๋ ๊ตญ๊ฐ๊ฐ ๋ช ๋ฑ์ ํ๋์ง ์๋ ค์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ ์ค์ ๊ตญ๊ฐ์ ์ N(1 โค N โค 1,000)๊ณผ ๋ฑ์๋ฅผ ์๊ณ ์ถ์ ๊ตญ๊ฐ K(1 โค K โค N)๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ๊ฐ ๊ตญ๊ฐ๋ 1๋ถํฐ N ์ฌ์ด์ ์ ์๋ก ํํ๋๋ค. ์ดํ N๊ฐ์ ๊ฐ ์ค์๋ ์ฐจ๋ก๋๋ก ๊ฐ ๊ตญ๊ฐ๋ฅผ ๋ํ๋ด๋ ์ ์์ ์ด ๊ตญ๊ฐ๊ฐ ์ป์ ๊ธ, ์, ๋๋ฉ๋ฌ์ ์๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ ์ฒด ๋ฉ๋ฌ ์์ ์ดํฉ์ 1,000,000 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ถ๋ ฅ์ ๋จ ํ ์ค์ด๋ฉฐ, ์ ๋ ฅ๋ฐ์ ๊ตญ๊ฐ K์ ๋ฑ์๋ฅผ ํ๋์ ์ ์๋ก ์ถ๋ ฅํ๋ค. ๋ฑ์๋ ๋ฐ๋์ ๋ฌธ์ ์์ ์ ์๋ ๋ฐฉ์์ ๋ฐ๋ผ์ผ ํ๋ค.
๐ํ์ด
๋๋ ๊ฐ ๋๋ผ๋ฅผ ๊ตฌ์กฐ์ฒด๋ก ๋ง๋ค์ด์ ํ์๋ค.
struct country
{
int idx;
int gold;
int silver;
int bronze;
};
๋๋ผ๋ค์ ์ ๋ณด๋ฅผ ๋ด์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ๊ฐ ์ ๋ณด๋ค์ ๋ฐฐ์ด์ ์ฑ์์ค๊ณผ ๋์์ k์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฐ๋ก ์ ๋ณด๋ฅผ ๋นผ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ๋ฑ์ ๊ณ์ฐ์ ์กฐ๊ฑด์ ๋ง์ถฐํ๋ค.
vector<country> vec;
int n, k;
void solve()
{
cin >> n >> k;
vec = vector<country>(n + 1);
int idx, g, s, b, pos = 0, res = 1;
for (int i = 0; i < n; ++i)
{
cin >> vec[i].idx >> vec[i].gold >> vec[i].silver >> vec[i].bronze;
if (vec[i].idx == k)
pos = i;
}
for (int i = 0; i < n; ++i)
{
if (vec[i].gold > vec[pos].gold)
{
res++;
}
else if (vec[i].gold == vec[pos].gold && vec[i].silver > vec[pos].silver)
{
res++;
}
else if (vec[i].gold == vec[pos].gold && vec[i].silver == vec[pos].silver && vec[i].bronze > vec[pos].bronze)
{
res++;
}
}
cout << res;
}
์๋ธํ ์คํฌ์ด๊ธธ๋ 100์ ์ด ๋์ฌ๊น ์ถ์๋๋ฐ ๊ทธ๋ฅ ๋ฐ๋ก 100์ ์ด ๋์๋ค.
๐์ ์ฒด ์ฝ๋
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
struct country
{
int idx;
int gold;
int silver;
int bronze;
};
vector<country> vec;
int n, k;
void solve()
{
cin >> n >> k;
vec = vector<country>(n + 1);
int idx, g, s, b, pos = 0, res = 1;
for (int i = 0; i < n; ++i)
{
cin >> vec[i].idx >> vec[i].gold >> vec[i].silver >> vec[i].bronze;
if (vec[i].idx == k)
pos = i;
}
for (int i = 0; i < n; ++i)
{
if (vec[i].gold > vec[pos].gold)
{
res++;
}
else if (vec[i].gold == vec[pos].gold && vec[i].silver > vec[pos].silver)
{
res++;
}
else if (vec[i].gold == vec[pos].gold && vec[i].silver == vec[pos].silver && vec[i].bronze > vec[pos].bronze)
{
res++;
}
}
cout << res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("input.txt", "rt", stdin);
solve();
return 0;
}