처음 작성한 코드는 다음과 같다.
하지만 틀렸다는 결과가 나왔다.
cmp함수 구현하는 방법을(>, < 부등호의 사용) 다시 알아 봐야겠다. 그리고 합할 때 개수를 구하는 게 아니라 모든 값의 합을 구하는 부분에서 틀렸다.
그리고 벡터 꼭 안써도 string 배열로 입력받아도 되긴되는 것 같다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
bool cmp(string a, string b){
if(a.length() == b.length()){
int na, nb = 0;
for(int i=0; i<a.length(); i++)
if( 48<=a[i] && a[i]<=57)
na++;
for(int i=0; i<b.length(); i++)
if( 48<=b[i] && b[i]<=57)
nb++;
if(na > nb)
return a > b;
if(na < nb)
return a < b;
}
if(a.length() > b.length())
return a > b;
if(a.length() < b.length())
return a < b;
if(a > b)
return a > b;
else
return a < b;
}
int main(){
int n;
cin >> n;
vector<string> v(n);
for(int i=0; i<n; i++)
cin >> v[i];
sort(v.begin(), v.end(), cmp);
for(int i=0; i<n; i++)
cout << v[i] << "\n";
return 0;
}
'백준' 카테고리의 다른 글
백준 10816 숫자 카드 2 c++ (0) | 2024.03.14 |
---|---|
백준 1920 수 찾기 c++ (0) | 2024.03.14 |
백준 10825 국영수 c++ (0) | 2024.03.13 |
백준 11659 구간 합 구하기 4 c++ (0) | 2024.03.12 |
백준 11048 이동하기 c++ (0) | 2024.03.11 |