[프로그래머스 1단계] 문자열 내 마음대로 정렬하기 -c++
내림차순 정렬하는 것처럼 함수를 만들어서 정렬시키려고 난리부루스를 했는데 이상하게 되었다.
compare변수에 int n이라는 파라미터를 하나 더 넣어서 난리가 난 것 같다.
그래서 어떻게 할지 찾아봤는데 무슨 람다 함수가 있다고 해서 난리쳤는데 잘못된 코드로 종결
잘못된 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// n번째 인덱스를 기준으로 정렬하는 비교 함수 정의
bool compare(const string &s1, const string &s2, int n) {
return s1[n] < s2[n];
}
vector<string> solution(vector<string> strings, int n) {
vector<string> answer;
// 람다 함수를 사용하여 compare 함수를 정의하고 n을 캡처하여 전달
sort(strings.begin(), strings.end(), [n](const string &s1, const string &s2) {
return compare(s1, s2, n);
});
// 정렬된 결과를 answer에 복사
answer = strings;
return answer;
}
근데 간단히 입력받은 n을 compare함수에서도 쓸 수 있도록 하는 방법이 있던 것!
풀이방법
그 방법은 "전역변수"를 사용하는 것이다.
전역변수를 이용해 인덱스를 넣어주는 것.
여기서는 전역변수 num을 이용해주었다.
그럼 위의 이상한 난리친 것과 다르게 깔끔하게 나올 수 있게 되었다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int num=0;
// n번째 인덱스를 기준으로 정렬하는 비교 함수 정의
bool compare(string s1, string s2) {
if(s1[num] == s2[num]){
return s1<s2;
}
return s1[num] < s2[num];
}
vector<string> solution(vector<string> strings, int n) {
vector<string> answer;
num=n;
sort(strings.begin(), strings.end(), compare);
return strings;
}
[프로그래머스 1단계] [PCCE 기출문제] 9번 / 이웃한 칸 - c++ (0) | 2024.03.09 |
---|---|
[프로그래머스 1단계] [PCCE 기출문제] 10번 / 데이터 분석 - c++ (0) | 2024.03.07 |
[프로그래머스 1단계] 가장 가까운 같은 글자 -c++ (0) | 2024.02.24 |
[프로그래머스 1단계] 실패율 - c++ (테스트 6,7,9,13,24 실패 해결) (0) | 2024.02.24 |
[프로그래머스 1단계] 콜라 문제 -c++ (0) | 2024.02.24 |
댓글 영역