문제를 보자마자 sort 를 사용하여 정렬하면 되겠구나 했는데
벡터 안의 string 요소들이 담겨 있으니 아 2차원 배열로 풀면 되겠구나? 하고 생각했었고... cmp 함수를
제대로 못설계해서 시간을 날렸던 문제이다
커스텀 비교 함수의 사용법을 이해하게 된 문제이다
벡터 내 요소들인 string 들도 순서대로 비교가능하고, string내부의 인덱스 요소들도 순서를 비교가능하다
sort 의 비교함수는 인자를 2개를 가지고 비교하는데, 문제에서는 string 내 인덱스값이 같을때를 예외조건으로
달았으므로 두 string의 k번째 인덱스의 값이 같을 시 비교순서도 정해서 만들어주면 되는 문제였다
아래에 cmp함수의 a<b 등의 비교에서 이해하기 쉽게 적었지만 원리는 조금 다르다. 하지만 지금은 저렇게만 알아두자
#include <bits/stdc++.h>
using namespace std;
int k;
// sort 의 세번째 인자로 가질수 있는 함수는 a와 b를 2개를 인자로 가져서 비교하는 함수이다
bool cmp(string a, string b){
// 문자열 a, b에서 k번째 인덱스의 값이 같다면
if(a[k]==b[k]){
// a, b를 비교하여 앞의 a가 더 작게 하라(작은 것이 먼저 오도록 = 오름차순)
return a < b;
// 문자열 a, b에서 k번째 인덱스의 값이 같지 않다면
} else {
// a, b 문자열의 k번째 인덱스의 값은 앞의 a[k] 가 뒤의 b[k]보다 작게하라(=오름차순)
return a[k] < b[k];
}
}
vector<string> solution(vector<string> strings, int n) {
// cmp 사용자 정의 함수에서 사용할 k에 n을 할당한다
k=n;
sort(strings.begin(), strings.end(), cmp);
return strings;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[프로그래머스 1 / c++] k번째 수 (0) | 2022.06.20 |
---|---|
[프로그래머스 1 / c++] 완주하지 못한 선수 (0) | 2022.06.19 |
[프로그래머스 1 / c++] 콜라츠 추측 (0) | 2022.06.17 |
[프로그래머스 1 / c++] 행렬의 덧셈 (0) | 2022.06.17 |
백준 4375/c++ )) 1 모듈러 연산에 대한 이해 (0) | 2022.06.17 |
댓글