๋ฌธ์
๋ค์์ด๋ ๊ธฐํ๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ธฐํ๋ ๋ชจ๋ ๋ค๋ฅธ ์๋ฆฌ์ผ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ค์์ด๋ ๊ธฐํ๋ฅผ ๋นจ๋ฆฌ ์ฐพ์์ ๋นจ๋ฆฌ ์ฌ๋๋ค์๊ฒ ์ฐ์ฃผํด์ฃผ๊ธฐ ์ํด์ ๊ธฐํ๋ฅผ ์๋ฆฌ์ผ ๋ฒํธ ์์๋๋ก ์ ๋ ฌํ๊ณ ์ ํ๋ค.
๋ชจ๋ ์๋ฆฌ์ผ ๋ฒํธ๋ ์ํ๋ฒณ ๋๋ฌธ์ (A-Z)์ ์ซ์ (0-9)๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์๋ฆฌ์ผ๋ฒํธ A๊ฐ ์๋ฆฌ์ผ๋ฒํธ B์ ์์ ์ค๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- A์ B์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด, ์งง์ ๊ฒ์ด ๋จผ์ ์จ๋ค.
- ๋ง์ฝ ์๋ก ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด, A์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ๊ณผ B์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ์ ๋น๊ตํด์ ์์ ํฉ์ ๊ฐ์ง๋ ๊ฒ์ด ๋จผ์ ์จ๋ค. (์ซ์์ธ ๊ฒ๋ง ๋ํ๋ค)
- ๋ง์ฝ 1,2๋ฒ ๋ ์กฐ๊ฑด์ผ๋ก๋ ๋น๊ตํ ์ ์์ผ๋ฉด, ์ฌ์ ์์ผ๋ก ๋น๊ตํ๋ค. ์ซ์๊ฐ ์ํ๋ฒณ๋ณด๋ค ์ฌ์ ์์ผ๋ก ์๋ค.
์๋ฆฌ์ผ์ด ์ฃผ์ด์ก์ ๋, ์ ๋ ฌํด์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๊ธฐํ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. N์ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์๋ฆฌ์ผ ๋ฒํธ๊ฐ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์๋ฆฌ์ผ ๋ฒํธ์ ๊ธธ์ด๋ ์ต๋ 50์ด๊ณ , ์ํ๋ฒณ ๋๋ฌธ์ ๋๋ ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค. ์๋ฆฌ์ผ ๋ฒํธ๋ ์ค๋ณต๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ ์ฐจ๋ก๋๋ก N๊ฐ์ ์ค์ ํ์ค์ ํ๋์ฉ ์๋ฆฌ์ผ ๋ฒํธ๋ฅผ ์ ๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์กฐ๊ฑด์ ๋ณด๋ ์๊ฐ ๋ฐ๋ก sort๋ฅผ ์ฐ๋ ๋ฌธ์ ๊ตฌ๋...ํ๋ ๊ฑธ ์์์ผ ํ๋ค!
2๋ฒ ์กฐ๊ฑด์ธ A์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ๊ณผ B์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ์ ๋น๊ตํด์ ์์ ํฉ์ ๊ฐ์ง๋ ๊ฒ์ด ๋จผ์ ์จ๋ค. (์ซ์์ธ ๊ฒ๋ง ๋ํ๋ค)๋ isdigit ํจ์๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํด์ฃผ๋ฉด ์ฝ๋ค!
01. isdigit ํจ์์ ๋ฐํํ์ boolean์ด๋ค
02. a์ b์ ์๋ฆฌ์๋ฅผ ๋น๊ตํ์ฌ ํฉ์ ๊ตฌํ๋ ๋ก์ง์ด ์ค๋ณต ์ฌ์ฉ๋๋ฏ๋ก ํจ์๋ก ๋นผ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
// 1431๋ฒ : ์๋ฆฌ์ผ ๋ฒํธ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> arr;
// 02-1. ๋ฌธ์์ด์์ ์ซ์์ธ ์๋ฆฌ๋ง ํฉํด์ ๋ฆฌํด
int findSum(string str){
int sum = 0;
for (int i=0; i<str.length(); i++){
if (isdigit(str[i]) == true) // isdigit ๋ฐํํ์ bool!
sum += str[i] - '0';
}
return sum;
}
bool compare(const string &a, const string &b){
// 01. ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด ์งง์ ๊ฒ ์ฐ์
if (a.length() != b.length())
return a.length() < b.length();
// 02. ๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ์๋ฆฌ์ ํฉ ์์ ๊ฒ์ด ์ฐ์
int a_sum = findSum(a);
int b_sum = findSum(b);
if (a_sum != b_sum)
return a_sum < b_sum;
// 03. ์ฌ์ ์์ผ๋ก ๋น๊ต
return a < b;
}
int main(){
int n;
cin >> n;
arr.assign(n, "");
for (int i=0; i<n; i++){
cin >> arr[i];
}
sort(arr.begin(), arr.end(), compare);
for (int i=0; i<n; i++){
cout << arr[i] << "\n";
}
}
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 10994๋ฒ : ๋ณ ์ฐ๊ธฐ - 19 (0) | 2021.09.06 |
---|---|
[๋ฐฑ์ค/C++] 1946๋ฒ : ์ ์ ์ฌ์ (0) | 2021.09.06 |
[๋ฐฑ์ค/C++] 1316๋ฒ : ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค (0) | 2021.09.06 |
[๋ฐฑ์ค/C++] 1026๋ฒ : ๋ณด๋ฌผ (0) | 2021.09.06 |
[๋ฐฑ์ค/C++] 13305๋ฒ : ์ฃผ์ ์ (0) | 2021.09.02 |
๋๊ธ