[c/c++] ๋ฐฑ์ค€ 8979 (Silver 5)

์€๋™ยท2023๋…„ 1์›” 22์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
10/49

๐Ÿ”จ ๋ฌธ์ œ

https://www.acmicpc.net/problem/8979

<์š”์•ฝ>

์˜ฌ๋ฆผํ”ฝ ์ˆœ์œ„ ๋งค๊ธฐ๊ธฐ
์กฐ๊ฑด 1. ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋งŽ์€ ๋‚˜๋ผ
์กฐ๊ฑด 2. ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด, ์€๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๋‚˜๋ผ
์กฐ๊ฑด 3. ๊ธˆ, ์€๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉด, ๋™๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๋‚˜๋ผ

n๊ฐœ์˜ ๊ตญ๊ฐ€๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ณ , k๋ฒˆ์งธ ๋‚˜๋ผ๋Š” ๋ช‡ ๋“ฑ์„ ํ–ˆ๋Š”์ง€ ์ถœ๋ ฅ


๐Ÿ”จ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

https://blog.naver.com/mms0801/221887013596
์ฒ ์ €ํžˆ ์ด ๋ธ”๋กœ๊ทธ์˜ ๋„์›€์„ ๋ฐ›์•˜๋”ฐ


๐Ÿ”จ ์ฝ”๋“œ

์ด ์ฝ”๋“œ๋Š” 8์ ์งœ๋ฆฌ ์ฝ”๋“œ์™€ 100์ ์งœ๋ฆฌ ์ฝ”๋“œ๋กœ ๋‚˜๋‰˜์–ด์ง‘๋‹ˆ๋‹ค๐Ÿ™„

  • 8์ 
#include <iostream>
using namespace std;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int n, k;
	cin >> n >> k;
	int a, b, c;
	int A[1001] = { 0 }, B[1001] = { 0 }, C[1001] = { 0 };
	int total[1001] = { 0 };
	for (int i = 1; i <= n; i++) {
		int num;
		cin >> num;
		if (num == k) {
			cin >> a >> b >> c;
		}
		else {
			cin >> A[i] >>B[i] >> C[i];
		}		
	}
	int rank = 0;
	for (int i = 1; i < n; i++) {
		if (A[i] > a) rank++;
		else if (A[i] == a && B[i] > b) rank++;
		else if (A[i] == a && B[i] == b && C[i] > c) rank++;
	}
	cout << rank+1;

	return 0;
}

์ด ์ฝ”๋“œ๋Š” n์ด 2์ธ ๊ฒฝ์šฐ, ๋ชจ๋“  ๊ตญ๊ฐ€์˜ ์€๋ฉ”๋‹ฌ ๋ฐ ๋™๋ฉ”๋‹ฌ ํš๋“ ์ˆ˜๊ฐ€ 0์ธ ๊ฒฝ์šฐ, n<=500์ธ ๊ฒฝ์šฐ๋ฅผ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค.

  • 100์ 
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef struct {
	int num;
	int gold;
	int silver;
	int bronze;
	int rank;
}nation; //nation ๊ตฌ์กฐ์ฒด ์ •์˜

bool compare(nation x, nation y) { //๊ณ ๋ ค ๊ธฐ์ค€์ด ๋งŽ์„ ๋•Œ ๊ตฌ์กฐ์ฒด ์ด์šฉ
	if (x.gold == y.gold) {
		if (x.silver == y.silver)
			return x.bronze > y.bronze;
		else return x.silver > y.silver; // ์€๋ฉ”๋‹ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ฆฌ
	}
	else return x.gold > y.gold; // ๊ธˆ๋ฉ”๋‹ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ฆฌ
}
int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int n, k,result=0;
	cin >> n >> k;
	vector<nation> medal(n + 1); //i=1๋ถ€ํ„ฐ ์‹œ์ž‘
	for (int i = 1; i <= n; i++) {
		cin >> medal[i].num >> medal[i].gold >> medal[i].silver >> medal[i].bronze;
	}
	sort(medal.begin() + 1, medal.end(), compare);

	int currank = 1;
	for (int i = 1; i <= n; i++) {
		if (medal[i].gold == medal[i - 1].gold && medal[i].silver == medal[i - 1].silver
			&& medal[i].bronze == medal[i - 1].bronze) { // ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด
			medal[i].rank = currank; // ํ˜„์žฌ ๋“ฑ์ˆ˜๋กœ ์ฑ„์›Œ์คŒ
		}
		else {
			currank = i; // ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ฉด ํ˜„์žฌ ๋“ฑ์ˆ˜๋ฅผ i๋กœ ์ฑ„์›Œ์คŒ
			medal[i].rank = i; // ํ˜„์žฌ ๋“ฑ์ˆ˜๋กœ ์ฑ„์›Œ์ฃผ๊ธฐ
		}
		if (medal[i].num == k) { // ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋‚˜๋ผ๊ฐ€ ๋‚˜์˜ค๋ฉด
			result = medal[i].rank;
			break;
		}
	}
	cout << result;
	return 0;
}

ํ  ์ผ๋‹จ ๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๊ฐ€ 8์ ์ด๋ผ๋Š”๊ฒŒ ๋„ˆ๋ฌด ์ถฉ๊ฒฉ์ด์—ˆ๊ณ  ใ…‹ใ…‹ใ…‹ใ…‹ ๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ 100์ ์ธ ๊ฑด์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์„œ์น˜ํ•ด์„œ ์ € ๋ธ”๋กœ๊ทธ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ณต๋ถ€ํ•˜์ž๋Š” ์ƒ๊ฐ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹น

profile
์ž์ž ์„ ์ˆ˜์ž…์žฅ~

0๊ฐœ์˜ ๋Œ“๊ธ€