πŸ•οΈ 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;
}

μ‹œκ°„.. μ΄ˆκ³ΌλŠ” μ–΄λ–»κ²Œ ν•΄κ²°ν•΄μ•Όν•˜μ§€γ… γ… ?

λ°˜μ‘ν˜•