https://school.programmers.co.kr/learn/courses/30/lessons/12917
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a,int b)
{
if(a>b)
return true;
else return false;
}
string solution(string s) {
sort(s.begin(),s.begin()+s.length(),compare);
return s;
}
설명
이 문제는 주어진 문자열을 내림차순으로 정렬하는 것이다.
그리고 그 기준은 알파벳 역순이며 대문자가 소문자보다 작다고 판단한다는 것이다.
아주 간단하게 해결할 수 있다.
<algorithm> 헤더에 sort함수를 통해 정렬을 할 수 있는데 비교함수를 지정할 수 있다.
bool 반환타입에 매개변수 2개를 받는 함수를 만들어 sort함수에 매개변수를 넣어주면 된다.
compare함수에 첫번째 인자가 더 클 때, true를 리턴해주면 오름차순을 얻고
두번째 인자가 더 클때. true를 리턴해주면 내림차순의 결과를 얻는다.
비교함수에 int 매개변수 2개를 사용한 이유는 아스키코드를 이용하기 위함이다.
아스키코드는 대문자가 소문자보다 숫자가 작고 마찬가지로 알파벳도 뒤로갈수록 숫자가 커지기 때문에
아스키코드를 이용하면 자연스레 내림차순의 결과를 얻을 수 있다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 시저 암호 - C++ (0) | 2023.10.18 |
---|---|
프로그래머스 - 이상한 문자 만들기 - C++ (0) | 2023.10.17 |
프로그래머스 - 같은 숫자는 싫어 - C++ (0) | 2023.10.14 |
프로그래머스 - 직사각형 별찍기 - C++ (0) | 2023.10.13 |
프로그래머스 - 문자열 다루기 기본 - C++ (0) | 2023.10.12 |