[C++] 프로그래머스 문자열 내림차순으로 배치하기
반응형
programmers.co.kr/learn/courses/30/lessons/12917
1. 서론
level 1의 간단한 문제다. 그런데 교훈이 생겼다. sort의 세상은 넓다...
2. 문제 풀이
대소문자로만 이루어진 문자열이 있다. 그 문자열을 내림차순으로 다시 배열을 바꿔서 출력하는 문제이다.
Zbcdefg -> gfedcbZ
이 문제의 키 포인트가 여기에 있다. 나는 그냥 단순하게 문자열을 쪼개서 역순으로 정렬하고 다시 문자열로 만들어서 풀었는데
문자열을 쪼갤 필요가 없었다. 문자열도 이미 배열처럼 취급을 해서 그냥 정렬을 할 수 있다고 한다.
3. 코드 설명
1) 나의 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s) {
string answer = "";
vector<char> c;
int i;
for (i = 0; i < s.size(); i++)
c.push_back(s[i]);
sort(c.rbegin(), c.rend());
for (i = 0; i < s.size(); i++)
answer += c[i];
return answer;
}
한눈에 봐도 알 수 있을 정도로 간결하다. 문자열을 문자형 배열로 쪼개고, 그 배열을 역순으로 정렬한다.
그전까지는 compare 함수를 만들어서 역순으로 정렬했는데, 저번 문제를 풀려고 써치 하다가 r을 붙으면 역으로 정렬된다는 사실을 알게 되었다. 그리고 그 문자형 배열을 다시 문자열로 만들어 return 해줬다.
2) 간결한 코드
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
string solution(string s) {
sort (s.begin(), s.end(), greater<char>());
return s;
}
난 정말 깜짝 놀랐다. 일단 문자열이 정렬이 되는지도 몰랐고 greater를 써본 적도 없고... 이렇게 간결하게 끝낼 거를... 짱!
반응형
'Algorithm' 카테고리의 다른 글
[C++] 프로그래머스 서울에서 김서방 찾기 (0) | 2020.11.16 |
---|---|
[C++] 프로그래머스 문자열 다루기 기본 (0) | 2020.11.15 |
[C++] 프로그래머스 문자열 내 p와 y의 개수 (0) | 2020.11.12 |
[C++] 프로그래머스 문자열 내 마음대로 정렬하기 (0) | 2020.11.12 |
[C++] 프로그래머스 두 정수 사이의 합 (0) | 2020.11.11 |