๐Ÿ•๏ธ ICPC Sinchon

[์‹œ๊ฐ„์ดˆ๊ณผ][C++] ๋ฐฑ์ค€ 10825๋ฒˆ : ๊ตญ์˜์ˆ˜

์„ ๋‹ฌ 2021. 7. 23. 13:11
๋ฐ˜์‘ํ˜•

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

 

10825๋ฒˆ: ๊ตญ์˜์ˆ˜

์ฒซ์งธ ์ค„์— ๋„ํ˜„์ด๋„ค ๋ฐ˜์˜ ํ•™์ƒ์˜ ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๊ฐ ํ•™์ƒ์˜ ์ด๋ฆ„, ๊ตญ์–ด, ์˜์–ด, ์ˆ˜ํ•™ ์ ์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ฃผ์–ด์ง„๋‹ค. ์ ์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1

www.acmicpc.net

 

๋ฌธ์ œ

๋„ํ˜„์ด๋„ค ๋ฐ˜ ํ•™์ƒ N๋ช…์˜ ์ด๋ฆ„๊ณผ ๊ตญ์–ด, ์˜์–ด, ์ˆ˜ํ•™ ์ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์œผ๋กœ ํ•™์ƒ์˜ ์„ฑ์ ์„ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  1. ๊ตญ์–ด ์ ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ์ˆœ์„œ๋กœ
  2. ๊ตญ์–ด ์ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ์˜์–ด ์ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ
  3. ๊ตญ์–ด ์ ์ˆ˜์™€ ์˜์–ด ์ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ์ˆ˜ํ•™ ์ ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ์ˆœ์„œ๋กœ
  4. ๋ชจ๋“  ์ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ์ด๋ฆ„์ด ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ (๋‹จ, ์•„์Šคํ‚ค ์ฝ”๋“œ์—์„œ ๋Œ€๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์— ์˜จ๋‹ค.)

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋„ํ˜„์ด๋„ค ๋ฐ˜์˜ ํ•™์ƒ์˜ ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๊ฐ ํ•™์ƒ์˜ ์ด๋ฆ„, ๊ตญ์–ด, ์˜์–ด, ์ˆ˜ํ•™ ์ ์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ฃผ์–ด์ง„๋‹ค. ์ ์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ด๊ณ , ๊ธธ์ด๋Š” 10์ž๋ฆฌ๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

 

์ถœ๋ ฅ

๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ ํ•™์ƒ์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

#include <iostream>

using namespace std; 

//arr[j] ์™€ arr[j+1] ์˜ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜
void change(int arr[], int n){
	int tmp = arr[n];
	arr[n] = arr[n+1];
	arr[n+1] = tmp;
}	

//์œ„ ํ•จ์ˆ˜์˜ string ๋ฒ„์ „
void change(string arr[], int n){
	string tmp = arr[n];
	arr[n] = arr[n+1];
	arr[n+1] = tmp;
}

int main(void) {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

	int n;
	cin >> n;

	string name[n];
	int kor[n], eng[n], math[n];
    
    //์ž…๋ ฅ๋ฐ›๊ธฐ
	for(int i=0; i<n; i++){
		cin >> name[i] >> kor[i] >> eng[i] >> math[i];
	}
    
    //์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด
	for(int i=0; i<n; i++){
		for(int j=0; j<n-i-1; j++){
			if(kor[j] < kor[j+1]){
				change(kor, j);
				change(eng, j);
				change(math, j);
				change(name, j);
			}
			else if (kor[j] == kor[j+1]){
				if(eng[j] > eng[j+1]){
					change(kor, j);
					change(eng, j);
					change(math, j);
					change(name, j);
					}
				else if(eng[j] == eng[j+1]){
					if(math[j] < math[j+1]){
						change(kor,j);
						change(eng,j);
						change(math,j);
						change(name,j);
					}
					else if(math[j] == math[j+1]){
						if(name[j] > name [j+1]){
							change(kor,j);
							change(eng,j);
							change(math,j);
							change(name,j);
							}
						}
					}
				}
		}
	}
    
    //์ถœ๋ ฅ
	for(int i=0; i<n; i++){
		cout << name[i] <<"\n";
	}
    
	return 0;
}

์‹œ๊ฐ„.. ์ดˆ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผํ•˜์ง€ใ… ใ… ?

๋ฐ˜์‘ํ˜•