๋ฌธ์
๋ค์์ด๋ ๊ธฐํ๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ธฐํ๋ ๋ชจ๋ ๋ค๋ฅธ ์๋ฆฌ์ผ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ค์์ด๋ ๊ธฐํ๋ฅผ ๋นจ๋ฆฌ ์ฐพ์์ ๋นจ๋ฆฌ ์ฌ๋๋ค์๊ฒ ์ฐ์ฃผํด์ฃผ๊ธฐ ์ํด์ ๊ธฐํ๋ฅผ ์๋ฆฌ์ผ ๋ฒํธ ์์๋๋ก ์ ๋ ฌํ๊ณ ์ ํ๋ค.
๋ชจ๋ ์๋ฆฌ์ผ ๋ฒํธ๋ ์ํ๋ฒณ ๋๋ฌธ์ (A-Z)์ ์ซ์ (0-9)๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์๋ฆฌ์ผ๋ฒํธ A๊ฐ ์๋ฆฌ์ผ๋ฒํธ B์ ์์ ์ค๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- A์ B์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด, ์งง์ ๊ฒ์ด ๋จผ์ ์จ๋ค.
- ๋ง์ฝ ์๋ก ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด, A์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ๊ณผ B์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ์ ๋น๊ตํด์ ์์ ํฉ์ ๊ฐ์ง๋ ๊ฒ์ด ๋จผ์ ์จ๋ค. (์ซ์์ธ ๊ฒ๋ง ๋ํ๋ค)
- ๋ง์ฝ 1,2๋ฒ ๋ ์กฐ๊ฑด์ผ๋ก๋ ๋น๊ตํ ์ ์์ผ๋ฉด, ์ฌ์ ์์ผ๋ก ๋น๊ตํ๋ค. ์ซ์๊ฐ ์ํ๋ฒณ๋ณด๋ค ์ฌ์ ์์ผ๋ก ์๋ค.
์๋ฆฌ์ผ์ด ์ฃผ์ด์ก์ ๋, ์ ๋ ฌํด์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๊ธฐํ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์๋ฆฌ์ผ ๋ฒํธ๊ฐ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์๋ฆฌ์ผ ๋ฒํธ์ ๊ธธ์ด๋ ์ต๋ 50์ด๊ณ , ์ํ๋ฒณ ๋๋ฌธ์ ๋๋ ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค. ์๋ฆฌ์ผ ๋ฒํธ๋ ์ค๋ณต๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ ์ฐจ๋ก๋๋ก N๊ฐ์ ์ค์ ํ์ค์ ํ๋์ฉ ์๋ฆฌ์ผ ๋ฒํธ๋ฅผ ์ ๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
isdigit๊ณผ ์์คํค ์ฝ๋ ๋ณํ์ ์๋ฉด ํ ์ ์๋ ๊ฐ๋จํ ๋ฌธ์ ์ด๋ค.
์ฐธ๊ณ ๋ก ์์คํค ์ฝ๋ ๋ณํ์ ๋ฃ์ง ์์ผ๋ฉด ์์ ๋ ๋ง์๋ค๊ณ ๋์ค์ง๋ง ์ค์ ์ ์ถ์์๋ ํ๋ฆฌ๋ค๊ณ ๋์จ๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int countSum(const string &s){
int sum = 0;
for (int i=0; i<s.size(); i++){
if (isdigit(s[i]))
sum += s[i] - '0'; // char->int๋ก ๋ณํ ํ์
}
return sum;
}
bool cmp(const string &s1, const string &s2){
// 1. ๊ธธ์ด๊ฐ ์งง์ ๊ฒ์ด ๋จผ์ ์จ๋ค
if (s1.size() != s2.size())
return s1.size() < s2.size();
// 2. ์๋ก ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด ์๋ฆฌ์์ ํฉ์ด ์์ ๊ฒ์ด ๋จผ์ ๋ค์ด์จ๋ค
if (countSum(s1) != countSum(s2))
return countSum(s1) < countSum(s2);
// 3. ์ฌ์ ์ ๋น๊ต
return s1 < s2;
}
int main(){
int n;
vector<string> serial_num;
// ์
๋ ฅ
cin >> n;
serial_num.assign(n, "");
for (int i=0; i<n; i++) {
cin >> serial_num[i];
}
// ์ฐ์ฐ
sort(serial_num.begin(), serial_num.end(), cmp);
// ์ถ๋ ฅ
for (int i=0; i<n; i++)
cout << serial_num[i] << "\n";
}
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 10994๋ฒ: ๋ณ ์ฐ๊ธฐ - 19 (0) | 2022.06.28 |
---|---|
[๋ฐฑ์ค/C++] 1946๋ฒ: ์ ์ ์ฌ์ (0) | 2022.06.28 |
[๋ฐฑ์ค/C++] 1026๋ฒ: ๋ณด๋ฌผ (0) | 2022.06.26 |
[๋ฐฑ์ค/C++] 13458๋ฒ: ์ํ ๊ฐ๋ (0) | 2022.06.26 |
[๋ฐฑ์ค/C++] 1316๋ฒ: ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค (0) | 2022.06.26 |
๋๊ธ