본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/12917
1.문제설명
문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
str은 길이 1 이상인 문자열입니다.
2. 문제해결 접근
- 반복문을 통해서 문자열 인수를 정수형 vector 로 재정의한다.
- 정수형 vector에 문자를 담으면, 아스키코드로 변환되어 저장한다.
- 내림차순으로 정렬 후
- 다시 문자로 변환하여 answer에 담아 반환한다.
.. 제시된 문제를 1차원적으로 해석한 느낌이다. 일단 코드로 구현해보자.
3. C++ 답안
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
string solution(string s) {
string answer = "";
vector<int> str;
for (int i = 0; i < s.size(); i++)
{
str.push_back(s[i]);
cout << str[i];
}
cout<<endl;
sort(str.rbegin(), str.rend());
for (int i = 0; i < str.size(); i++)
{
answer += (char)str[i];
}
cout<< answer;
return answer;
}
정상 작동한다. 효율적인 코드로 느껴지진 않는다. 다른 풀이를 더 확인해 보자.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s) {
string answer = "";
sort(s.rbegin(),s.rend());
return s;
}
... 문자도 내림차순 정렬이 된다... 미안해 컴퓨터야 모자란 닝겐이 귀찮은 일을 시켰구나......
'알고리즘 > [프로그래머스]Lv.1' 카테고리의 다른 글
[프로그래머스]Lv 1. 최소 직사각형 (0) | 2022.11.08 |
---|---|
[프로그래머스]Lv 1. 예산 (0) | 2022.11.08 |
[프로그래머스]Lv1. 음양 더하기 (0) | 2022.11.05 |
[프로그래머스]Lv1. 제일 작은 수 제거하기 (0) | 2022.11.05 |
[프로그래머스]Lv1. x만큼 간격이 있는 n개의 숫자 (0) | 2022.11.04 |