Level1 - -

 

 문제

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 사항
  • str은 길이 1 이상인 문자열입니다.
입출력 예
s return
"Zbcdefg" "gfedcbZ"

 

 풀이

사용언어 : C++

 

string형과 char형에 대해서 다시 찾아보고 공부가 필요함을 느꼈다.

최근 개발에서 JS만 사용해서 자료형이나 형변환을 신경을 쓰지 않고 개발을 해서 잊고 개발하던 부분을

다시 문제를 통해서 찾아보는 기회가 되었다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool compare ( char a, char b );
string solution(string s) {
    string answer = "";
    vector<char> vecStrSmall;
    vector<char> vecStrLarge;
    
    for ( int i = 0; i < s.size(); ++i ){
        
        if ( 'a' <= s[i]){
            vecStrSmall.push_back(s[i]);
        }
        else{
            vecStrLarge.push_back(s[i]);
        }        
    }
    
    sort(vecStrSmall.begin(), vecStrSmall.end(), compare);
    sort(vecStrLarge.begin(), vecStrLarge.end(),compare);
    
    for(int i = 0 ; i < vecStrSmall.size(); ++i ){
        answer.push_back(vecStrSmall[i]);
    }
    for(int i = 0 ; i < vecStrLarge.size(); ++i ){
         answer.push_back(vecStrLarge[i]);
    }
    
    
    return answer;
}

bool compare ( char a, char b ){
    return a>b;
}

 

다른사람의 풀이

#include <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;

string solution(string s) {
    sort (s.begin(), s.end(), greater<char>());
    return s;
}


#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string s) {
    string answer = "";
    sort(s.rbegin(),s.rend());

    return s;
}

 

 

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12917

+ Recent posts